SpringMVC实现员工信息的增删改查

r囧r小猫 2022-06-09 01:18 277阅读 0赞

创建一个SpringMVC的动态web工程要注意的事项

1.配置web.xml文件

  1. <!--向服务器注册前端控制器! -->
  2. <servlet>
  3. <!--DispatcherServlet指的是SpringMVC的前端控制器!,给服务器使用,创建servlet对象! -->
  4. <servlet-name>springDispatcherServlet</servlet-name>
  5. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  6. <!-- 初始化参数contextConfigLocation用于指定SpringMVC配置文件的路径以及名称 -->
  7. <init-param>
  8. <param-name>contextConfigLocation</param-name>
  9. <param-value>classpath:springmvc.xml</param-value>
  10. </init-param>
  11. <load-on-startup>1</load-on-startup>
  12. <!-- 数字0或者大于0的数字表示的是:在服务器启动的时候创建Servlet对象,而不是第一次访问的时候创建
  13. 小于0的数字指的是:在第一次访问的时候创建Servlet对象.
  14. 在数字大于O的情况下,数字越小,优先级越高!
  15. -->
  16. </servlet>
  17. <!-- Map all requests to the DispatcherServlet for handling -->
  18. <servlet-mapping> <!-- 用 servlet-mapping指定请求映射的路径-->
  19. <servlet-name>springDispatcherServlet</servlet-name>
  20. <url-pattern>/</url-pattern> <!-- 用url-pattern指定拦截 的请求路径! -->
  21. </servlet-mapping>
  22. <!-- 解决乱码问题,注意要将解决乱码的过滤器放在所有过滤器之前,否则不能解决乱码问题 -->
  23. <filter>
  24. <filter-name>characterEncodingFilter</filter-name>
  25. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  26. <init-param>
  27. <param-name>encoding</param-name>
  28. <param-value>UTF-8</param-value>
  29. </init-param>
  30. </filter>
  31. <filter-mapping>
  32. <filter-name>characterEncodingFilter</filter-name>
  33. <url-pattern>/*</url-pattern>
  34. </filter-mapping>
  35. <!-- 该过滤器用于将POST请求转换为PUT、DELETE请求 -->
  36. <filter>
  37. <filter-name>hiddenHttpMethodFilter</filter-name>
  38. <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  39. </filter>
  40. <filter-mapping>
  41. <filter-name>hiddenHttpMethodFilter</filter-name>
  42. <url-pattern>/*</url-pattern>
  43. </filter-mapping>

2.配置springmvc.xml文件

  1. <!-- 用于扫描com.neuedu下的所有带@Controller注解的类 -->
  2. <context:component-scan base-package="com.neuedu"></context:component-scan>
  3. <!-- 用于简化@Requestmapping注解方法中返回界面; -->
  4. <!--InternalResourceViewResolvers 是视图解析器 ,它会将逻辑视图转换成实际的物理视图,做一个转发操作!
  5. 也就是说具体步骤:prefix + 方法的返回值 + suffix-->
  6. <!-- /WEB-INF/views/success.jsp -->
  7. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  8. <property name="prefix" value="/WEB-INF/view/"></property>
  9. <property name="suffix" value=".jsp"></property>
  10. </bean>

3.创建controller层下的类,注意要加@Controller注解,这样springmvc.xml文件中才能扫描到。

  1. /**
  2. * 我们通过@RequestMapping做请求URL的映射!
  3. * @return
  4. */
  5. @RequestMapping("/sayHello")
  6. public String sayHello(){
  7. return "/WEB-INF/views/success.jsp";
  8. }

springMVC实现人员信息的增删改查

1.实现查询所有人员信息,在一个表格中显示出来

通过一个超链接,转到SelectAll方法,在方法中查出所有的员工信息,用键值对方式把信息转到一个页面上;

  1. @RequestMapping(value="/SelectAll")
  2. public ModelAndView SelectAll(){
  3. ModelAndView mv=new ModelAndView();
  4. mv.setViewName("list");
  5. mv.addObject("list", employeedao.getAll());
  6. return mv;
  7. }

在显示页面把所有的员工信息显示到一个表格中;

list.jsp中的代码:

  1. <body>
  2. <form action="" method="post"> <!-- 用于将POST请求转换为DELETE请求 -->
  3. <input type="hidden" name="_method" value="delete"/>
  4. </form>
  5. <c:if test=" ${ empty list}"><h2 align="center">没有员工信息</h2></c:if>
  6. <c:if test="${!empty list }">
  7. <h2 align="center">员工信息展示</h2>
  8. <table border="1" cellpadding="10" align="center" cellspacing="0">
  9. <thead>
  10. <th>姓名</th>
  11. <th>Email</th>
  12. <th>Gender</th>
  13. <th>部门</th>
  14. <th>修改</th>
  15. <th>删除</th>
  16. </thead>
  17. <tbody>
  18. <c:forEach items="${list}" var="list">
  19. <tr>
  20. <td>${list.lastName }</td>
  21. <td>${list.email}</td>
  22. <td>${list.gender==0?"男":"女"}</td>
  23. <td>${list.department.departmentName } </td>
  24. <td><a href="${pageContext.request.contextPath}/update/${list.id}" >修改</a></td>
  25. <td><a href="${pageContext.request.contextPath}/delete/${list.id}" class="del">删除</a></td>
  26. </tr>
  27. </c:forEach>
  28. <tr>
  29. <td colspan="6" align="center"><a href="${pageContext.request.contextPath}/insert">添加</a></td>
  30. </tr>
  31. </tbody>
  32. </table>
  33. </c:if>
  34. </body>

注意:代码中用到了JSTL标签,不要忘记引入标签

效果图:

  1. ![SouthEast][]

2.删除员工信息

点击删除超链接,要转到delete方法中,要携带用户id,这样才能按id删除用户,这里用的是REST风格,把参数id放到路径中;我们在删除时要将POST请求转换为DELETE请求,通过一个表单设置一个隐藏域来设置DELETE,然后进行提交;这里删除超链接是在循环中的,我们可以通过用一个class类用jQuery进行提交。
在list.jsp 加入的代码

  1. <script type="text/javascript" src="${pageContext.request.contextPath }/script/jquery-1.9.1.min.js"></script>
  2. <script>
  3. $(function(){
  4. $(".del").click(function(){
  5. var url=$(this).attr("href");
  6. alert(url);
  7. $("form").attr("action",url).submit();
  8. return false;
  9. });
  10. });
  11. </script>

注意:这里引入js静态文件,要配置一下springmvc.xml,否则不能找到js文件

SpringMVC处理静态资源【导入js文件】:
1.为什么出现这样的问题:
优雅的REST风格的资源URL不希望带.html或.do等后缀,若将DispatcherServlet请求映射配置为/,
则SpringMVC将捕获WEB容器的所有请求,包括静态资源的请求,SpringMVC会将他们当成一个普通请求处理,因此找不到对应处理器将导致错误。
2.解决:在SpringMVC的配置文件中配置

进入DELETE方法后,通过ID进行删除,然后重定向到SelectAll方法,这样又可以直接进入到显示信息页面

  1. @RequestMapping(value="/delete/{id}",method=RequestMethod.DELETE)
  2. public String deleteemployee(@PathVariable(value="id") Integer id){
  3. employeedao.delete(id);
  4. return "redirect:/SelectAll";
  5. }

3.插入员工信息

点击添加链接,会进入insert方法,然后再方法中查找出需要用户选择,不能乱填的信息,通过下拉菜单选择,然后执行完方法,转到insert.jsp页面,(例如部门信息,要把所有部门显示出来,供人选择)

  1. @RequestMapping(value="/insert",method=RequestMethod.GET)
  2. public ModelAndView insert(){
  3. ModelAndView mv=new ModelAndView();
  4. mv.setViewName("insert");
  5. mv.addObject("department", departmentdao.getDepartments());
  6. mv.addObject("employee", new Employee());
  7. return mv;
  8. }

进入insert.jsp页面,使用Spring标签,这样可以信息回显,

  1. <body>
  2. <form:form action="${pageContext.request.contextPath}/insertemp" method="POST" modelAttribute="employee">
  3. <c:if test="${empty employee.id}">
  4. 姓名:<form:input path="lastName" /><br>
  5. </c:if>
  6. <c:if test="${!empty employee.id }">
  7. <%-- 姓名:<form:input path="lastName" readonly="true"/><br> --%>
  8. <input type="hidden" name="_method" value="put"/>
  9. <form:hidden path="id"/>
  10. </c:if>
  11. Email:<form:input path="email" /><br>
  12. <%
  13. Map<String,Object> map=new HashMap<>();
  14. map.put("0", "男");
  15. map.put("1","女");
  16. request.setAttribute("map", map);
  17. %>
  18. Gender<form:radiobuttons path="gender" items="${map}"/><br>
  19. 部门:<form:select path="department.id" items="${department}" itemLabel="departmentName" itemValue="id"/><br>
  20. <input type="submit" value="提交">
  21. </form:form>
  22. </body>

注意:不要忘记引入Spring标签,path相当于name,值一定要与对象的属性名相同。

<%@ taglib uri=”http://www.springframework.org/tags/form“ prefix=”form” %>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core“ prefix=”c”%>

保存信息后,然后返回显示列表

  1. @RequestMapping(value="/insertemp",method=RequestMethod.PUT)
  2. public String insertemp(Employee employee){
  3. employeedao.save(employee);
  4. return "redirect:/SelectAll";
  5. }

4.更新用户信息

用户点击修改超链接后,把id传给后台,然后根据id查找这个id的所有信息,然后把信息带到更新页面,用于回显,

  1. @RequestMapping(value="/update/{id}",method=RequestMethod.GET)
  2. public ModelAndView update(@PathVariable(value="id") Integer id){
  3. ModelAndView mv=new ModelAndView();
  4. mv.setViewName("insert");
  5. mv.addObject("department", departmentdao.getDepartments());
  6. mv.addObject("employee", employeedao.get(id));
  7. return mv;
  8. }
  9. @RequestMapping(value="/updateemp",method=RequestMethod.PUT)
  10. public String updateemp(@ModelAttribute(value="employee")Employee employee){
  11. employeedao.save(employee);
  12. System.out.println("111");
  13. return "redirect:/SelectAll";
  14. }

更新页面可以与插入信息页面共用,当有些信息是不能被用户更改时,可以设置隐藏域,表单提交时也会提交隐藏域中的信息,也可以使用@ModelAttribute注解,先查出这个id的所有信息,然后与提交的信息比较,如果有修改,那么就是修改的信息(比如id表单中没传,该用户还会是原先的id,姓名有更改,那么姓名就是表单提交的name)

  1. @ModelAttribute
  2. public void getStu(@RequestParam(value="id",required=false) Integer id,Map<String, Object> map){
  3. if(id!=null){
  4. Employee employee = employeedao.get(id);
  5. map.put("employee", employee);
  6. }
  7. }

@ModelAttribute注解用于修饰方法,这个@ModelAttribute注解修饰的方法在我们每次请求目标方法之前都会被执行一次!

发表评论

表情:
评论列表 (有 0 条评论,277人围观)

还没有评论,来说两句吧...

相关阅读

    相关 游客信息增删系统

    1 问题 在景区中来来往往的人很多,在登记表上填写游客信息非常麻烦而且不方便保存以及后续的增删改查,同样该问题也可以看作其他类似的填表信息录入问题,不仅是旅游存在这个问题。

    相关 springMVC入门增删理解

    springMVC入门增删改查理解 真的好久没有发原创博文了,懒惰啊! 最近忙于对H5页面的理解,工作大都是前端移动端的工作,虽然技能熟练和代码理解深刻了,但对于目