SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等
1.SpringMVC基本概述
Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一
采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性
– 在 web.xml 中配置 DispatcherServlet
– 加入 Spring MVC 的配置文件
– 编写处理请求的处理器,并标识为处理器
– 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

<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<!-- 向服务器注册前端控制器 -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<!--DispatcherServlet指的是SpringMVC的前端控制器,给服务器使用,创建servlet对象 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 用于制定SpringMVC配置文件的路径以及名称 -->
<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-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- 用url-pattern指定拦截的请求路径 -->
<url-pattern>/</url-pattern>
</servlet-mapping>

点击Next输入文件名springmvc.xml,再点Next,在以下三项前打勾√
在Open Type中查找 InternalResourceViewResolver,获得其全路径
在springmvc.xml文件中添加
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
在web.xml文件中可以不设置初始化参数,也就是不写<init-param>
但是要将spring.xml文件改名为 springDispatcherServlet-servlet.xml,并移动到WEB-INF目录下
@RequestMapping(value="/sayHello",method=RequestMethod.GET,params={"username","pwd!=123"})
public String SUCCESS(){
System.out.println("111");
return "success";
}
@RequestMapping()可以定义在类上,也可以定义在方法上
– 类定义处:提供初步的请求映射信息。相对于 WEB 应用的根目录
– 方法处:提供进一步的细分映射信息。相对于类定义处的 URL
@RequestMapping 的 value、method、params 及 heads 分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射 更加精确化
params表示及含义
– *:匹配文件名中的任意字符
– **:** 匹配多层路径
– /user/**/createUser: 匹配 /user/createUser、/user/aaa/bbb/createUser 等 URL
– /user/createUser??:匹配 /user/createUseraa、/user/createUserbb 等 URL
HTTP 协议里面,四个表示操作方式的动词:
<a href="${pageContext.request.contextPath }/getOrderById/1">okok</a> <form action="${pageContext.request.contextPath }/postOrderById/2" method="post">
<input type="submit" value="Submit"/>
</form> <form action="${pageContext.request.contextPath }/putOrderById/3" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value="Submit"/>
</form> <form action="${pageContext.request.contextPath }/deleteOrderById/4" method="post">
<input type="hidden" name="_method" value="delete"/>
<input type="submit" value="Submit"/>
</form>
超链接<a>是get请求,浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。需要在form表单中添加隐藏域,name为‘method',value为’POST/DELETE'
同时需要在web.xml文件中配置 HiddenHttpMethodFilter
<!-- HiddenHttpMethodFilter过滤器可以将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>
@RequestMapping(value="/getOrderById/{id}",method=RequestMethod.GET)
public String getOrderById(@PathVariable(value="id") Integer id){
//调用service层方法
System.out.println(id);
return SUCCESS;
} @RequestMapping(value="/postOrderById/{id}",method=RequestMethod.POST)
public String postOrderById(@PathVariable(value="id") Integer id){
//调用service层方法
System.out.println(id);
return SUCCESS;
} @RequestMapping(value="/putOrderById/{id}",method=RequestMethod.PUT)
@ResponseBody
public String putOrderById(@PathVariable(value="id") Integer id){
//调用service层方法
System.out.println(id);
return SUCCESS;
} @RequestMapping(value="/deleteOrderById/{id}",method=RequestMethod.DELETE)
@ResponseBody
public String deleteOrderById(@PathVariable(value="id") Integer id){
//调用service层方法
System.out.println(id);
return SUCCESS;
}
因为在tomcat8.0中不支持PUT和DELETE方法,所以需要@ResponseBody,否则405错误
4.使用@RequestParam绑定请求参数值
@RequestMapping(value="/testRequestParam",method=RequestMethod.POST)
public String testRequestParam(@RequestParam(value="username") String name,@RequestParam(value="password",required=false,defaultValue="123456789") String password){
System.out.println(name+"---"+password);
return SUCCESS;
}
在jsp页面
<form action="${pageContext.request.contextPath }/testRequestParam" method="post">
Username:<input type="text" name="username"/>
Password:<input type="password" name="password"/>
<input type="submit" value="Submit"/>
</form>
@RequestParam可以从jsp页面获取参数
<!-- 解决中文乱码问题 -->
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等的更多相关文章
- 【SpringMVC】SpringMVC系列4之@RequestParam 映射请求参数值
4.@RequestParam 映射请求参数值 4.1.概述 Spring MVC 通过分析处理方法的签名,将 HTTP 请求信息绑定到处理方法的相应人参中.Spring MVC 对控制器处理 ...
- SpringMVC学习系列-后记 解决GET请求时中文乱码的问题
SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...
- 【SpringMVC】请求乱码处理
一.post请求乱码 二.get请求乱码 一.post请求乱码 在web.xml中加入 <filter> <filter-name>CharacterEncodingFilte ...
- springMVC1 springmvc的基础知识
springmvc第一天 springmvc的基础知识 springmvc课程安排: 第一天: 基础知识 springmvc框架(重点) mvc在b/s系统中应用方式 springmvc框架原理(Di ...
- SpringMvc学习---基础知识考核
SpringMVC 1.SpringMVC的工作流程 流程 : 1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMappi ...
- web请求乱码问题总结
问题1:springmvc通过@ResponseBody向页面返回值(包括汉字)时,乱码 解决方案: springmvc3.2之后可以声明注解驱动器(不知道是不是这么翻译)的时候的控制编码的转换,结果 ...
- Springmvc入门基础(五) ---controller层注解及返回类型解说
0.@Controller注解 作用:通过@Controller注解,注明该类为controller类,即控制器类,需要被spring扫描,然后注入到IOC容器中,作为Spring的Bean来管理,这 ...
- Spring框架系列(14) - SpringMVC实现原理之DispatcherServlet处理请求的过程
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...
- javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路 先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符 -- ...
随机推荐
- php工作两年了。。。
对于一个快要毕业的人来说,我相信大部分人都是迷茫的,我也一样但是迷茫的一塌糊涂完全不知道以后自己能干什么. 2014年底,某某培训机构来到学校进行招生.反正在对方的一阵忽悠之下我是蠢蠢欲动,但是当时的 ...
- 关于SpringMVC中如何把查询数据全转成String类型
之前,本想与客户商量做几张固定的报表予使用,结果发现客户每个月都需要各种各样的报表,所以我们做了个窗口用于直接执行SQL语句:数据量一开始并不是很大查询出来的数据较少(约1-6W左右),所以刚开始几个 ...
- MongoDB的Windows安装
一.下载MongoDB安装文件 下载地址:http://pan.baidu.com/s/1nvEuDD3 二.双击下载的文件,根据向导一直到finish.比如安装目录为 d:\mongodb 1.创建 ...
- Python基础之字符编码
前言 字符编码非常容易出问题,我们要牢记几句话: 1.用什么编码保存的,就要用什么编码打开 2.程序的执行,是先将文件读入内存中 3.unicode是父编码,只能encode解码成其他编码格式 utf ...
- Nancy基于JwtBearer认证的使用与实现
前言 最近在看JSON Web Token(Jwt)相关的东西,但是发现在Nancy中直接使用Jwt的组件比较缺乏,所以就在空闲时间写了一个. 这个组件是开源的,不过目前只支持.NET Core,后续 ...
- 浮点数的陷阱--double i != 10 基本都是对的,不管怎么赋值
#include <stdio.h>int main(){ double i; for(i = 10; i != 10, i < 12; i += 0.1) ...
- 【js】操作checkbox radio 的操作总结
摘要 总是忘记checkbox radio 的具体操作,总是坑自己,总结下记下来 html <input type="checkbox" value="1" ...
- Python中的re模块--正则表达式
Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...
- Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
(1)下边的一个Java类包含了所有Map.Set.List.数组.属性集合等这些容器,主要用于演示spring的注入配置: package com.lc.collection; import jav ...
- node-xlsx
1.安装 必要组件 npm install node-xlsx -S /*Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator ...