编译软件:IntelliJ IDEA 2019.2.4 x64
操作系统:win10 x64 位 家庭版
Maven版本:apache-maven-3.6.3
spring mvc版本:5.3.1
目录
项目案例场景
SpringMvc框架下的Restful的CRUD的demo 练习
需求分析
1:获取所有员工信息
- URL:/emps
- 请求方式:GET
- 显示效果如下所示:
2:添加操作去添加员工的页面
- URL:/toAddPage
- 请求方式:GET
- 显示效果
3:添加操作-添加员工
- URL:/emps
- 请求方式:POST
- 添加成功之后【重定向到查询所有员工的UR】
ps: 我这里实现的思路是先添加员工,然后调用并返回查询所有员工的方法的返回值响应给浏览器
Controller层相关实现代码如下:
@GetMapping("/emps")
/**
* 配置URL [/emps],服务器使用ModelAndView对象处理响应数据
* 查询所有员工信息
*/
public ModelAndView selectAllEmps(){
ModelAndView mv=new ModelAndView();
mv.setViewName("emps");
//将list集合employees存放进请求域中
Collection<Employee> employees = employeeService.showAllEmps();
mv.addObject("employees",employees);
return mv;
}
/**
* 添加员工
* @param employee
* @return
*/
@PostMapping("/emps")
//使用pojo入参
public ModelAndView addEmps(Employee employee){
boolean b = employeeService.addEmp(employee);
System.out.println(b==true?"添加成功":"添加失败");
return selectAllEmps();
}
- 需求显示效果
4:删除员工
-
URL:emps/id
-
请求方式:DELETE、
-
点击删除按钮弹出提示框
-
删除成功之后同样重定向到查询所有员工的URL
ps: 我这里实现的思路是先删除员工,然后调用并返回查询所有员工的方法的返回值响应给浏览器【转发】,并非是重定向
- 显示效果:对应的员工信息从前端页面中直接删除
5:修改操作去修改员工的页面
- URL:/toUpdatePage/{id)
- 请求方式:GET
- 根据员工的id从数据库中查询员工信息
- 员工id不能修改,设置为只读
- 效果如下:
问题描述:在项目web.xml中配置DispatcherServlet时,红色波浪线报错(Cannot resolve Servlet ‘DispatcherServlet‘)
如下所示:
原因分析
出现这个报警是因为Spring MVC 框架无法找到名称为 “dispatcherServlet” 的 Bean。
Spring MVC 框架会在启动时查找名为 dispatcherServlet 的 Servlet Bean,并将其注册到 Servlet 容器中。如果该 Bean 无法正常创建或者未能被正确地扫描和加载,就会引发 "Cannot resolve Servlet 'dispatcherServlet'" 的异常。
查询相关资料,我发现有几个常见的原因可能导致这个问题:
- ①
web.xml 中的配置错误
,在 Web 应用程序的 web.xml 文件中定义了 servlet 和 filter 的映射关系,如果其中与 Spring MVC 中相应的配置不匹配,就会导致前端控制器 DispatcherServlet 无法找到对应的 Bean。 - ②web.xml中相关配置代码正确,
可能是 Spring MVC框架不能正确加载或扫描该web.xml文件
- ③如果Spring MVC 框架的版本更新到了较新的版本,但是没有相应修改相关配置,也容易导致该错误的出现
- ④未导入相关jar包
综上所述,首先我的Spring Mvc框架的jar包是基于5.3.1的版本,其他依赖也是适配5.3.1的Spring Mvc版本且已经正确导入。故原因③ & ④排除。
web.xml中关于DispatcherServlet的相关配置代码都是从上一个工程文件直接复制过来的,故web.xml配置正确,排除原因①,检查分析原因③,检查Spring Mvc是否可以正确扫描加载到web.xml文件。打开”Project Structure“,我发现我的Spring Mvc模块中的web工程引用了项目中另一个web工程的web.xml文件
,难怪报错!!!
解决方案:检查Spring Mvc是否可以正确扫描加载到web.xml文件,若不能,重新设置选择web.xml路径
①找到下面的图标,点击打开“Project Structure“,或者按快捷键”Ctrl+Alt+Shift+S“打开。
②”Modules“ -> 选中你要检查的spring mvc模块 -> 选中’Web" -> 检查两个路径是否正确【web.xml所在的路径与web.xml相关联的web工程根路径是否正确】(
ps,我是这里引用了项目中另一个web工程的web.xml文件而导致的飘红
)
重新修改引用web.xml的路径,使之Spring Mvc可以正确加载该web.xml即可
③依次点击 Maven中的 clear 与 compile,,便可解决问题