springmvc的REST_CRUD
2017-07-23 00:15
288 查看
[b]一、REST_CRUD步骤[/b]
① 配置环境
1)配置web.xml
<!-- 配置 SpringMVC 的DispatcherServlet -->
<!-- 配置 HiddenHttpMethodFilter: 把 POST 请求转为 DELETE、PUT 请求 -->
2) 配置springmvc.xml
<!-- 配置自动扫描的包 -->
<!-- 配置视图解析器 -->
② 建实体类和DAO(包含注解)
③ 建Handle(包含注解)
在对应的显示界面,由于SpringMVC没有遍历标签,这里使用JSTL标签,<c:>。可以直接把数据放在map中,springmvc会自动的存入到作用域中。
[b]二、jsp的遍历[/b]
entities、dao、handlers (要使用Spring的Annotation注解来注入)
注: 其中,SpringMvc不支持像Struts2里面的遍历方式,所以还是得使用jstl的C标签if else循环语句来取值。
<c:if test="${emptyrequestScope.employees }">
没有任何员工信息.
</c:if>
<c:if test="${!emptyrequestScope.employees }">
<tableborder="1" cellpadding="10" cellspacing="0"> …………………………
<c:forEach items="${requestScope.employees}" var="emp">
……<td>${emp.id}</td>……
……<td>${emp.gender== 0 ? 'Female' : 'Male' }</td>……. //可用于显示男女
</c:forEach>
</c:if>
[b]三、form标签使用[/b]
<%@ taglib prefix="form"uri="http://www.springframework.org/tags/form" %>
使用 form 标签原因:可以更快速的开发出表单页面, 也可以更方便的进行表单值的回显。
使用 form
标签注意:可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,则默认从 request 域对象中读取 command 的表单 bean,如果该属性值也不
存在,则会发生错误。因为SpringMCV默认会认为这个表单自动回显的,这时候就会去请求域中寻找这个bean来匹配当前的表单值(即使不需要回显,也要这么做)。
<form:form action="${pageContext.request.contextPath}/emp" method="POST" modelAttribute="employee">
//这里的emplyee就是要读取的表单bean,在handlers中对应的 map.put("employee",new Employee());
[b]四、使用post的方式来delete数据[/b]
由于超链接<a href>一般都是get方式的请求,而在web.xml中配置的过滤器只能把 POST 请求转为 DELETE 或 PUT 请求,所以这时候要引入js来处理(先用form表单将转 为post,然后再转为DELETE,然后再交由js来控制)。
而在引入js时,就是引入了静态资源,SpringMVC 处理静态资源会出错:
① 为什么会有这样的问题:
优雅的 REST 风格的资源URL 不希望带 .html 或 .do 等后缀,若将 DispatcherServlet 请求映射配置为 /, 则 Spring MVC 将捕获 WEB 容器的所有请求, 包括静态资源的请 求, SpringMVC 会将他们当成一个普通请求处理, 因找不到对应处理器将导致错误。
② 解决:
在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/>
这个配置将在 SpringMVC 上下文中定义一个DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该 请求交由 WEB 应用服务器默认的 Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理。
一般 WEB 应用服务器默认的Servlet 的名称都是 default.,若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定。
当然也要配<mvc:annotation-driven ></mvc:annotation-driven>,不然之前的requestMapping就会出错。
[b]五、使用post的方式来put数据[/b]
对于_method 不能使用 form:hidden 标签, 因为form默认是表单回显的,而modelAttribute对应的bean 中没有 _method 这个属性,
所以不能使用
<form:hiddenpath="_method" value="PUT"/>,应该使用<input type=”hidden” name=”_method”value=”PUT” />
<form:form action="${pageContext.request.contextPath }/emp"method="POST" modelAttribute="employee">
<form:errors path="*"></form:errors> //查看所有的异常错误
<br>
<c:iftest="${employee.id == null }">
<!--path 属性对应 html 表单标签的 name 属性值 -->
LastName:<form:input path="lastName"/>
<form:errors path="lastName"></form:errors>
</c:if>
<c:iftest="${employee.id != null }">
<form:hidden path="id"/>
<input type="hidden" name="_method" value="PUT"/>
</c:if>
</form:form>
① 配置环境
1)配置web.xml
<!-- 配置 SpringMVC 的DispatcherServlet -->
<!-- 配置 HiddenHttpMethodFilter: 把 POST 请求转为 DELETE、PUT 请求 -->
2) 配置springmvc.xml
<!-- 配置自动扫描的包 -->
<!-- 配置视图解析器 -->
② 建实体类和DAO(包含注解)
③ 建Handle(包含注解)
在对应的显示界面,由于SpringMVC没有遍历标签,这里使用JSTL标签,<c:>。可以直接把数据放在map中,springmvc会自动的存入到作用域中。
[b]二、jsp的遍历[/b]
entities、dao、handlers (要使用Spring的Annotation注解来注入)
注: 其中,SpringMvc不支持像Struts2里面的遍历方式,所以还是得使用jstl的C标签if else循环语句来取值。
<c:if test="${emptyrequestScope.employees }">
没有任何员工信息.
</c:if>
<c:if test="${!emptyrequestScope.employees }">
<tableborder="1" cellpadding="10" cellspacing="0"> …………………………
<c:forEach items="${requestScope.employees}" var="emp">
……<td>${emp.id}</td>……
……<td>${emp.gender== 0 ? 'Female' : 'Male' }</td>……. //可用于显示男女
</c:forEach>
</c:if>
[b]三、form标签使用[/b]
<%@ taglib prefix="form"uri="http://www.springframework.org/tags/form" %>
使用 form 标签原因:可以更快速的开发出表单页面, 也可以更方便的进行表单值的回显。
使用 form
标签注意:可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,则默认从 request 域对象中读取 command 的表单 bean,如果该属性值也不
存在,则会发生错误。因为SpringMCV默认会认为这个表单自动回显的,这时候就会去请求域中寻找这个bean来匹配当前的表单值(即使不需要回显,也要这么做)。
<form:form action="${pageContext.request.contextPath}/emp" method="POST" modelAttribute="employee">
//这里的emplyee就是要读取的表单bean,在handlers中对应的 map.put("employee",new Employee());
[b]四、使用post的方式来delete数据[/b]
由于超链接<a href>一般都是get方式的请求,而在web.xml中配置的过滤器只能把 POST 请求转为 DELETE 或 PUT 请求,所以这时候要引入js来处理(先用form表单将转 为post,然后再转为DELETE,然后再交由js来控制)。
而在引入js时,就是引入了静态资源,SpringMVC 处理静态资源会出错:
① 为什么会有这样的问题:
优雅的 REST 风格的资源URL 不希望带 .html 或 .do 等后缀,若将 DispatcherServlet 请求映射配置为 /, 则 Spring MVC 将捕获 WEB 容器的所有请求, 包括静态资源的请 求, SpringMVC 会将他们当成一个普通请求处理, 因找不到对应处理器将导致错误。
② 解决:
在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/>
这个配置将在 SpringMVC 上下文中定义一个DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该 请求交由 WEB 应用服务器默认的 Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理。
一般 WEB 应用服务器默认的Servlet 的名称都是 default.,若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定。
当然也要配<mvc:annotation-driven ></mvc:annotation-driven>,不然之前的requestMapping就会出错。
对于js中的控制,修改所有form 的action是 .deleted的href $(function(){ $(".delete").click(function(){ var href = $(this).attr("href"); $("form").attr("action", href).submit(); return false; }); })
<td><a class="delete" href="emp/${emp.id}">Delete</a></td>
<form action="" method="POST"> <input type="hidden" name="_method" value="DELETE"/> </form>
[b]五、使用post的方式来put数据[/b]
对于_method 不能使用 form:hidden 标签, 因为form默认是表单回显的,而modelAttribute对应的bean 中没有 _method 这个属性,
所以不能使用
<form:hiddenpath="_method" value="PUT"/>,应该使用<input type=”hidden” name=”_method”value=”PUT” />
<form:form action="${pageContext.request.contextPath }/emp"method="POST" modelAttribute="employee">
<form:errors path="*"></form:errors> //查看所有的异常错误
<br>
<c:iftest="${employee.id == null }">
<!--path 属性对应 html 表单标签的 name 属性值 -->
LastName:<form:input path="lastName"/>
<form:errors path="lastName"></form:errors>
</c:if>
<c:iftest="${employee.id != null }">
<form:hidden path="id"/>
<input type="hidden" name="_method" value="PUT"/>
</c:if>
</form:form>
相关文章推荐
- 使用SpringMVC实现REST风格的CRUD功能
- SpringMVC实现完整的REST风格的CRUD
- springmvc Rest 风格的 CRUD
- 学习SpringMVC——你们要的REST风格的CRUD来了
- SpringMVC学习笔记-REST风格CRUD
- SpringMVC联手REST实现入门级的CRUD
- 【知识整理】SpringMVC-REST风格CRUD
- SpringMVC联手REST实现入门级的CRUD
- 学习SpringMVC——你们要的REST风格的CRUD来了
- SpringMVC联手REST实现入门级的CRUD
- SpringMVC教程/实例(三):java SpringMVC之REST实现简单的增删改查CRUD
- SpringMVC学习笔记-REST风格CRUD
- SpringMVC联手REST实现入门级的CRUD
- SpringMVC对REST服务使用mockmvc 做测试
- REST、RESTFUL的理解以及SpringMVC实现Restful编程
- REST构架风格介绍之二:CRUD
- 浅谈SpringMVC对RESTfull的支持
- springmvc学习笔记(18)——CRUD之查询
- SpringMVC REST 风格
- SpringMVC DispatcherServlet在配置Rest url-pattern的一点技巧