SpringMVC-RestfulCRUD
文章目录
- 回顾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: 男:<form:radiobutton path="gender" value="1"/> 女:<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相关推荐
- springmvc十八:RestfulCRUD增删改查小实战
水浒好汉列表展示: 查询所有好汉 水浒好汉列表展示:访问index.jsp---->直接发送/emps---->控制器查询所有好汉---->将数据放在请求域中----->转发到 ...
- java学习笔记——springmvc 之 数据自定义转换器 数据格式化 JSR303数据校验返回与接收JSON(@RequestBody 和 @ResponseBody)
九.数据绑定流程分析 1.提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!-- 解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay ...
- 【SpringMVC】概述
概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的. 理解是servlet的一个升级 Sp ...
- 【SpringMVC】基本概念
SpringMVC的基本概念 三层架构 我们的开发一般都是基于c/s或者b/s架构.在JavaEE开发中,几乎全都是基于B/S架构开发.在B/S架构中,系统标准的三层架构包括:表现层,业务层,持久层. ...
- SSM框架整合(Spring+SpringMVC+MyBatis)
输出结果 1.Maven Web项目创建 之前有写过Eclipse+Maven创建web项目的帖子,如果需要,请参考这里写链接内容 创建好项目之后因为入下图: 2.SSM整合 2.1 引入需要的JAR ...
- SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...
- SpringMVC——通俗易懂讲讲Ajax~
聊聊Ajax 一.什么是Ajax 二.iframe标签简单伪造Ajax 三.Ajax的实现 1. 基本概念的了解 Ajax的核心是什么? XMLHttpRequest是什么? Ajax数据传输的数据格 ...
- Jackson、FastJson快速入门(整合SpringMVC)
目录 1. 什么是 JSON 2. JSON 语法规则 3. JSON 与 JS 对象的关系 4. JSON 和 JS 对象互转 5. Jackson-数据格式转换 1. 环境搭建 2. 对象转jso ...
- RESTful风格及其SpringMVC实现
目录 1.RESTful概念 2.RESTful功能 3.对比:传统方式操作资源 4.SpringMVC实现传统方式操作资源 5.使用RestFul操作资源 6.SpringMVC实现RESTful操 ...
- 使用注解开发SpringMVC详细配置教程
目录 1.使用注解开发SpringMVC 1.新建一个普通的maven项目,添加web支持 2.在pom.xml中导入相关依赖 3.配置web.xml 4.编写SpringMVC配置文件 1. 自动扫 ...
最新文章
- Centos 7.5 安装Zabbix4.0
- 强大的API测试工具Hitchhiker v0.9 基于UI的断言测试,回顾2017
- 权威的C ++书籍指南和清单
- 为什么全网 都在说 iOS 开发不行了 ?
- 从零开始学python网络爬虫-从零开始学Python 三(网络爬虫)
- 恢复WORD2010的默认模板2011-05-03
- Myeclipse创建Maven项目提示:Creating maven-archetype-webapp has encountered a problem. 解决方法
- 基于Session共享的单点登录或通行证系统方案
- 实现用户操作指引功能
- 移植PPP2.4.5到ARM上实现拨号
- 2021垂直类电商私域化洞察报告
- linux系统下部署go语言环境
- Android自定义标题栏
- ZONe Sneaking 优化建图 + 最短路
- 获取列——Excel的COLUMN、COLUMNS
- MATLAB hilbert谱 纵坐标由归一化频率改为正常频率的方法
- 有苦有乐的算法 --- 在一个数组中,有一种数出现了奇数次,其余数都出现了偶数次,找到这种数
- 写作分析——缓和说教内容
- ArcGIS入库操作
- 远程信息处理系统和车队管理系统有何不同
热门文章
- hdu2063 二分图(基础题)
- 56.ISE综合,在chipscope信号列表看不到
- ThinkPHP框架使用心得二 CURD操作
- 删除同域名所有cookies_淘宝自动登录2.0,新增Cookies序列化
- 24继承父类并实现多个接口
- numpy学习笔记(莫烦python)
- html自定义工具条,为Autodesk Viewer添加自定义工具条的更好方法
- pep8 python 编码规范_Python合集之Python语法特点(三)
- 算法 | RASAC 入门
- php-7.2.13的安装,php7.2 安装mcrypt扩展