文章目录

  • 回顾helloword基本配置
  • 员工列表展示
  • 添加
  • 修改
  • 删除

回顾helloword基本配置

web.xml

<!-- The front controller of this Spring Web application, responsible for handling all application requests --><servlet><servlet-name>SpringMVC_crud</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- Map all requests to the DispatcherServlet for handling --><servlet-mapping><servlet-name>SpringMVC_crud</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 配置一个字符编码的filter --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!-- encoding:指定解决POST请求乱码 --><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><!-- forceEncoding:顺手解决响应乱码 -->       <init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 支持Rest风格转换的filter --><filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

xxxx-sevlet.xml

<!-- 扫描所有组件 -->
<context:component-scan base-package="com.jh"></context:component-scan><!-- 配置视图解析器,拼接页面 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">   <property name="prefix" value="/WEB-INF/pages/"></property><property name="suffix" value=".jsp"></property>     </bean>
@Controller
public class helloController {@RequestMapping("/hello")public String hello(){return "success";}
}

员工列表展示

访问index.jsp---->直接发送/emps---->控制器查询所有员工---->放在请求域中---->转发到list页面展示

@Controller
public class EmployeeController {@AutowiredEmployeeDao employeeDao;/** 查询所有员工*/@RequestMapping("/emps")public String getEmps(Model model){Collection<Employee> all = employeeDao.getAll();model.addAttribute("emps", all);return "list";}

index.jsp

    <!-- 访问项目就要展示员工列表页面 -->
<jsp:forward page="/emps"></jsp:forward>

list.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><title>员工列表</title>
</head>
<body>
<h1>员工列表页面</h1>
<table border="1" cellpadding="5px" cellspacing="0"><tr><td>ID</td><th>lastName</th><th>email</th><th>gender</th><th>departmentName</th><th>edit</th><th>delete</th></tr><c:forEach items="${emps }" var="emp"><tr><td>${emp.id }</td><td>${emp.lastName }</td><td>${emp.email }</td><td>${emp.gender==0?"女":"男" }</td><td>${emp.department.departmentName }</td><td>edit</td><td>delete</td></tr></c:forEach>
</table>
</body>

添加

1、list.jsp点击“员工添加”---->2、查询出所有的部门信息要展示在页面---->3、来到add.jsp---->4、输入员工数据---->5、点击保存---->6、处理器收到员工保存请求(保存员工)---->7、保存完成后来到list.jsp

/** 去员工添加页面,去之前查出所有部门信息进行展示*/@RequestMapping("/toaddpage")public String toAddPage(Model model){//1.查出所有部门Collection<Department> departments = departmentDao.getDepartments();//2.放在请求域中model.addAttribute("depts", departments);model.addAttribute("employee", new Employee());//3.去添加页面return "add";}

list.jsp

<a href="toaddpage">添加员工</a>

add.jsp

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %><h1>员工添加</h1>
<!-- 表单标签
通过springMVC的表单标签可以实现将模型数据中的属性和HTML表单元素绑定,
以实现表单数据更便捷编辑和表单值的回显
1)SpringMVC认为,表单数据中的每一项最终都是要回显的path指定的是一个属性,这个属性是从隐含模型(请求域中取出的某个对象的属性);path指定的每一个属性,请求域中必须有一个对象,拥有这个属性;这个对象就是请求域中的command;modelAttribute=""1)、以前我们变淡标签会从请求域中获取一个command对象;把这个对象中的每一个属性对应的显示出来2)、可以告诉springmvc不要去取command的值,我放了一个modelAttribute指定的值去对象用的key就用我modelAttribute指定的--><form:form action="" modelAttribute="employee">lastName:<form:input path="lastName"/><br>email:<form:input path="email"/><br>gender:<br>男:<form:radiobutton path="gender" value="1"/><br>女:<form:radiobutton path="gender" value="0"/><br>dept:<!-- items="",指定要遍历的集合,自动遍历,遍历出的每一个元素都是一个department对象itemLabel="属性",指定遍历出的这个对象的哪个属性时作为option标签体的值itemValue="属性名",指定刚才遍历出来的这个对象的哪个属性时作为要提交的value值--><form:select path="department.id" items="${depts }" itemLabel="departmentName" itemValue="id"></form:select><br><input type="submit" value="保存"></form:form>

联系

5、点击保存

    /** 保存员工*/
@RequestMapping(value="/emp",method=RequestMethod.POST)public String addEmp(Employee employee){System.out.println("要添加的员工;"+employee);employeeDao.save(employee);return "redirect:/emps";}

add.jsp

  <!-- 绝对路径 --><%pageContext.setAttribute("ctp", request.getContextPath());%><form:form action="${ctp }/emp" modelAttribute="employee" method="POST">

联系:

运行结果

修改

/** 修改*/@RequestMapping(value="/emp/{id}",method=RequestMethod.PUT)public String updateEmp(@ModelAttribute("employee")Employee employee){System.out.println("要修改的员工"+employee);//更新保存二合一employeeDao.save(employee);return "redirect:/emps";}/** 提前查询员工*/@ModelAttributepublic void myModelAttribute(@RequestParam(value="id",required=false)Integer id,Model model){if(id!=null){Employee employee = employeeDao.get(id);model.addAttribute("employee", employee);}}

list.jsp
为edit加链接

<%pageContext.setAttribute("ctp", request.getContextPath());%><td><a href="${ctp }/emp/${emp.id }">edit</a></td><td>delete</td></tr></c:forEach>
</table>
<a href="${ctp }/toaddpage">添加员工</a>

edit.jsp

<%pageContext.setAttribute("ctp", request.getContextPath());%>
<h1>员工修改页面</h1>
<form:form action="${ctp }/emp/${employee.id }" modelAttribute="employee" method="post"><input type="hidden" name="_method" value="put"><input type="hidden" name="id" value="${employee.id }">email:<form:input path="email"/>gender:&nbsp;&nbsp;&nbsp;男:<form:radiobutton path="gender" value="1"/>&nbsp;&nbsp;&nbsp;女:<form:radiobutton path="gender" value="0"/><br>dept:<form:select path="department.id" items="${depts }"itemLabel="departmentName" itemValue="id"></form:select><br><input type="submit" value="修改">
</form:form>

删除

/** 删除*/
@RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE)
public String deleteEmp(@PathVariable("id")Integer id){employeeDao.delete(id);return "redirect:/emps";
}

list.jsp

<td><form action="${ctp }/emp/${emp.id }" method="post"><input type="hidden" name="_method" value="DELETE"><input type="submit" value="删除"></form>
</td>

SpringMVC-RestfulCRUD相关推荐

  1. springmvc十八:RestfulCRUD增删改查小实战

    水浒好汉列表展示: 查询所有好汉 水浒好汉列表展示:访问index.jsp---->直接发送/emps---->控制器查询所有好汉---->将数据放在请求域中----->转发到 ...

  2. java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)

    九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!--    解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...

  3. 【SpringMVC】概述

    概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的.                       理解是servlet的一个升级 Sp ...

  4. 【SpringMVC】基本概念

    SpringMVC的基本概念 三层架构 我们的开发一般都是基于c/s或者b/s架构.在JavaEE开发中,几乎全都是基于B/S架构开发.在B/S架构中,系统标准的三层架构包括:表现层,业务层,持久层. ...

  5. SSM框架整合(Spring+SpringMVC+MyBatis)

    输出结果 1.Maven Web项目创建 之前有写过Eclipse+Maven创建web项目的帖子,如果需要,请参考这里写链接内容 创建好项目之后因为入下图: 2.SSM整合 2.1 引入需要的JAR ...

  6. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  7. SpringMVC——通俗易懂讲讲Ajax~

    聊聊Ajax 一.什么是Ajax 二.iframe标签简单伪造Ajax 三.Ajax的实现 1. 基本概念的了解 Ajax的核心是什么? XMLHttpRequest是什么? Ajax数据传输的数据格 ...

  8. Jackson、FastJson快速入门(整合SpringMVC)

    目录 1. 什么是 JSON 2. JSON 语法规则 3. JSON 与 JS 对象的关系 4. JSON 和 JS 对象互转 5. Jackson-数据格式转换 1. 环境搭建 2. 对象转jso ...

  9. RESTful风格及其SpringMVC实现

    目录 1.RESTful概念 2.RESTful功能 3.对比:传统方式操作资源 4.SpringMVC实现传统方式操作资源 5.使用RestFul操作资源 6.SpringMVC实现RESTful操 ...

  10. 使用注解开发SpringMVC详细配置教程

    目录 1.使用注解开发SpringMVC 1.新建一个普通的maven项目,添加web支持 2.在pom.xml中导入相关依赖 3.配置web.xml 4.编写SpringMVC配置文件 1. 自动扫 ...

最新文章

  1. Centos 7.5 安装Zabbix4.0
  2. 强大的API测试工具Hitchhiker v0.9 基于UI的断言测试,回顾2017
  3. 权威的C ++书籍指南和清单
  4. 为什么全网 都在说 iOS 开发不行了 ?
  5. 从零开始学python网络爬虫-从零开始学Python 三(网络爬虫)
  6. 恢复WORD2010的默认模板2011-05-03
  7. Myeclipse创建Maven项目提示:Creating maven-archetype-webapp has encountered a problem. 解决方法
  8. 基于Session共享的单点登录或通行证系统方案
  9. 实现用户操作指引功能
  10. 移植PPP2.4.5到ARM上实现拨号
  11. 2021垂直类电商私域化洞察报告
  12. linux系统下部署go语言环境
  13. Android自定义标题栏
  14. ZONe Sneaking 优化建图 + 最短路
  15. 获取列——Excel的COLUMN、COLUMNS
  16. MATLAB hilbert谱 纵坐标由归一化频率改为正常频率的方法
  17. 有苦有乐的算法 --- 在一个数组中,有一种数出现了奇数次,其余数都出现了偶数次,找到这种数
  18. 写作分析——缓和说教内容
  19. ArcGIS入库操作
  20. 远程信息处理系统和车队管理系统有何不同

热门文章

  1. hdu2063 二分图(基础题)
  2. 56.ISE综合,在chipscope信号列表看不到
  3. ThinkPHP框架使用心得二 CURD操作
  4. 删除同域名所有cookies_淘宝自动登录2.0,新增Cookies序列化
  5. 24继承父类并实现多个接口
  6. numpy学习笔记(莫烦python)
  7. html自定义工具条,为Autodesk Viewer添加自定义工具条的更好方法
  8. pep8 python 编码规范_Python合集之Python语法特点(三)
  9. 算法 | RASAC 入门
  10. php-7.2.13的安装,php7.2 安装mcrypt扩展