RESTful风格

<!-- 携带surveyId去后台 -->
<!-- RESTFUL风格:/xxx/23 -->
<!-- 接收方式:@PathVariable注解 -->

<!-- 传统风格:/xxx?surveyId=23 -->
<!-- 接收方式:@RequestParam注解 -->

1、导包

commons-logging-1.1.3.jar
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar
taglibs-standard-impl-1.2.1.jar
taglibs-standard-spec-1.2.1.jar

2、写配置

web.xml

  <!-- 将request转发给springmvc处理 -->
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--
支持REST风格的过滤器:可以将POST请求转换为PUT或DELETE请求
实现① REST,简化操作
浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,
Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。 -->
<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>
/**
* 乱码问题;
* 请求乱码;浏览器发给服务器的数据;服务器解析出来是乱码;
* GET乱码;
* 原因:tomcat连接器先收到请求地址信息和数据,因为中文在地址中带着;
* 解决:给服务器的server.xml中8080端口配置处添加URIEncoding="utf-8";
*
* POST乱码;
* 原因:数据在请求体中携带的,所以,tomcat不是一开始就解析请求体的;
* 在第一次调用request.getParameter的时候解析请求体的;
* request.setCharacterEncoding("utf-8");
* 利用filter原理统一解决post和响应;
*
*
*
* 响应乱码;服务器发给浏览器的数据,浏览器显示出来乱码;
* 原因:浏览器收到的数据不明确;
* 解决:给发送数据的时候,告诉浏览器数据的内容类型,编码方式,处理方式;
* response.setContentType("text/html;charset=utf-8");
*
* Spring解决乱码的Filter;
* @author lfy
*
*/
    <!-- web的三大组件都是在web.xml中配置,字符编码的filter永远都是在其他filter最前面 -->
<!-- 具体设置要看源码 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<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>

springmvc.xml

<context:component-scan base-package="com.lamsey"></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>

使用 SpringMVC的表单标签

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!-- SpringMVC提供的表单标签; 1、功能强大  2、操作简单   3、动态绑定,表单的快速回显;-->
<!-- 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显
path:双重功能
1、相当于原来input的name属性<input name="username"/>
2、动态的将path指定的值从一个对象的属性中取出来显示;
要对form进行绑定
可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,
则默认从 request 域对象中读取 command 的表单 bean,如果该属性值也不存在,

则会发生错误。(Neither BindingResult nor plain target object
for bean name 'command' available as request attribute)
#这里设置command
请求域中没有一个名为command的对象;
我们给请求域中放一个key为command的对象;path属性指定的key就会从这个对象中取出来;
-->
<form:form action="" method="post">
lastName:<form:input path="lastName"/>
email:<form:input path="email"/>
gender:<form:input path="gender"/>
<!--path 提交的key -->
<!--items:指定部门的集合在哪里保存;SpringMVC会自动遍历每一项内容(deparment对象);
itemLabel="":指定遍历的这个对象的哪个属性作为要显示在页面的提示显示,也就是option的标签体内容
itemValue=""-->
department:<form:select path="department.id"
items="${depts }"
itemLabel="departmentName"
itemValue="id"
></form:select>
<input type="submit" value="提交"/>
</form:form>

SpringMVC中的转发和重定向

eg:

return "redirect:/emps";

return "forward:/index.action";

SpringMVC-RESTRUL___CRUD知识点总结的更多相关文章

  1. SpringMVC注解知识点

    SpringMVC注解知识点 SpringMVC原生知识点: 上一篇: https://www.cnblogs.com/yiur-bgy/p/14088883.html 注解版 1.新建一个Moudl ...

  2. SpringMVC配置知识点

    SpringMVC原生知识点 通过idea新建一个SpringMVC的Project(新建普通的项目就行了) 填写完之后Finish就行了 (实际开发不会这么用,这么做是为了理解!) 然后就是Spri ...

  3. springmvc基本知识点

    springmvc高级知识:

  4. 170821-关于SpringMVC的知识点

    1.SpringMVC 概述以及优势 SpringMVC和Spring的关系:  软件开发的三层架构: web层[表示层.表现层]---->Service层---->Dao[DataBas ...

  5. springmvc高级知识点

  6. SpringMVC必备知识点汇总

    1.参数接收 1.1 数组 1.2 文件上传 1.2.1 单个文件上传 1.2.2 多个文件上传 1.2.3 文件上传时,携带其他数据 2.参数校验 参数校验:https://www.cnblogs. ...

  7. springMVC常用知识点的整理

    [spring boot]第3篇:spring boot 进行 web 开发 forward和redirect的区别是什么 Spring MVC中redirect重定向3种方式 =========== ...

  8. SpringMVC+SpringJdbc+SQLServer+EasyUI增删改查

    前言 前天用SpringJdbc连接了一把SQLServer,早上起来用SpringMVC+SpringJdbc+EasUI写了个增删改查的demo,主要是熟悉下SpringMVC相关知识点,如vie ...

  9. SpringMVC框架之第四篇

    5.SpringMVC异常处理 5.1.异常分类 1.可预知异常: Java编译时可检测异常,例如:IOException.SQLException等. 自定义异常(继承Exception父类的自定义 ...

  10. 一起学SpringMVC之注解

    概述 SpringMVC不仅提供了Xml的配置方式,还提供了注解的方式来声明一个Controller,本文属于SpringMVC的入门级内容,仅供学习分享使用,如有不足之处,还请指正. SpringM ...

随机推荐

  1. Django REST framework之版本,解释器,序列化

    1 版本 2 解释器 3.序列化 1 版本 通过?后面传版本号有两种方法: 方法一 from django.shortcuts import render from rest_framework.vi ...

  2. 阿里巴巴Web前端面试的一道JS题目,求解答!!!

    题目大概是这种: function outer(){ return inner; var inner = "a"; function inner(){}; inner = 9; } ...

  3. java--Git学习使用

    第一步:安装 很简单,什么都不用管,一直下一步直到完成 第二步:Git配置                   1.打开GIt Bash         2.依次输入   git config --g ...

  4. 【js】++i和i++

    解析: i++ 执行完语句后再加1 ++i 先加1再执行后面的语句 例如 var i=0; ++i 的值为1 i++的值为0 注意:不管前置++还是后置++,i的值都会发生变化,值为1 例子 1.va ...

  5. linux grep 的使用

    常用的 grep 选项有:    -c 只输出匹配行的个数.    -i 不区分大小写(只适用于单字符).    -h 查询多文件时不显示文件名.    -l 查询多文件时只输出包含匹配字符的文件名. ...

  6. Android学习之基础知识八—Android广播机制实践(实现强制下线功能)

    强制下线功能算是比较常见的了,很多的应用程序都具备这个功能,比如你的QQ号在别处登录了,就会将你强制挤下线.实现强制下线功能的思路比较简单,只需要在界面上弹出一个对话框,让用户无法进行任何操作,必须要 ...

  7. Android 百度sdk5.0定位

    在开发中可能 会用到诸如“定位出当前所在城市,所在位置的经纬度”等功能.一次性的定位肯能定位不成功,可能经纬度未读出来,也可能是地址信息或者城市信息未读出来.此时就需对定位后拿到的信息做判断,加入没有 ...

  8. JVM有哪些分区?(解释详细 通俗易懂)

    JVM的分区可以分为两种:线程私有的内存区和线程共享的内存区 一.JVM中线程私有的内存区: 1.程序计数器:当前线程所执行的字节码行号计数指示器,是线程私有的,即每个线程都有自己的程序计数器,需要注 ...

  9. Windows 系统安装Docker Compose 步骤

    参考 Docker Compose official 官方安装指南: https://docs.docker.com/compose/install/ 实际上到目前为止还不能直接在Windows上安装 ...

  10. .NET持续集成与自动化部署之路第二篇——使用NuGet.Server搭建公司内部的Nuget(包)管理器

    使用NuGet.Server搭建公司内部的Nuget(包)管理器 前言     Nuget是一个.NET平台下的开源的项目,它是Visual Studio的扩展.在使用Visual Studio开发基 ...