1.请求相关操作
1.1@PathVariable
@PathVariable
* 作用:将路径占位符信息绑定到目标方法的参数上,为RESTful风格奠定了技术支持
* 位置:标记在目标方法的参数上
* 属性:
- value属性:要求该value属性值要和占位符保持一致。
1.2@RequestParam注解
@RequestParam
* 作用:用来获取请求参数的
* 位置:可以标记在目标方法的参数上
* 属性:
- value: 要求该value属性值要和前端发送过来的参数的键保持一致。
- required:默认值true,表示该参数必须携带,可以设置为false,表示这个可有可无
- defaultvalue:表示如果我们携带过来了这个参数,就是用你携带过来的参数值,如果没携带这个参数,那就使用该属性指定的值
注意:@RequestParam是可以省略的,前提是:目标方法的参数名和前端发过来的参数名保持一致。
代码:
1.3@RequestHeader注解
@RequestHeader:
* 作用:获取请求头信息
* 位置:标记在目标方法的参数上
* 属性:
- value: 要求该value属性值要和前端发送过来的请求头的键保持一致。
- required:默认值true,表示该请求头必须携带,可以设置为false,表示这个可有可无
- defaultvalue:表示如果我们携带过来了这个请求头,就是用你携带过来的请求头值,如果没携带这个请求头,那就使用该属性指定的值
代码:
1.4@CookieValue注解
@CookieValue
* 作用:获取某个cookie的值
* 位置:标记在目标方法的参数上
* 属性:
- value: 要求该value属性值要和某个cookie的键保持一致。
- required:默认值true,表示该cookie必须携带,可以设置为false,表示这个可有可无
- defaultvalue:表示如果我们携带过来了这个指定的cookie,就是用你携带过来的cookie值,如果没携带这个cookie,那就使用该属性指定的值
1.5处理请求乱码
请求乱码
GET请求乱码:tomcat7及以下都有这个乱码
解决方案:URIEncoding=“UTF-8”
POST请求乱码:filter:在获取第一个请求参数之前,设置request.setCharacterEncoding(“utf-8”);在web.xml文件中配置一个CharacterEncodingFilter,并且制定encoding=utf-8就可以了。
响应乱码:暂时不存在[response.contentType(“text/html;charset=utf-8”)]
<!-- 该过滤器只是处理post请求乱码,而且 -->
<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>
最好,我们将该filter配置在其它filter之前。
1.6原生API
所谓原生API是指:在javaweb部分学过的
HttpServletRequest、
HttpServletResponse、
HttpSession
具体使用:只需要在目标handler方法的参数上声明一下即可使用。
1.7mvc:view-controller标签
1.8Springmvc支持pojo对象
springmvc支持使用pojo对象直接作为目标handler方法的参,springmvc也支持使用连缀的方式给pojo对象的属性的属性赋值
- 要求:
- pojo对象的属性名要和表单项的name值保持一
致
- pojo对象存在无参构造器【反射】
前端页面:
<form action="${pageContext.request.contextPath}/user/testParameter" method="get">
姓名:<input type="text" name="name"><br>
密码:<input type="password" name="password"><br>
性别:<input type="radio" name="gender" value="1">男<input type="radio" name="gender" value="0">女<br>
年龄:<input type="text" name="age"><br>
爱好: <input type="checkbox" name="hobby" value="ppq">乒乓球
<input type="checkbox" name="hobby" value="lq">篮球
<input type="checkbox" name="hobby" value="zq">足球
<input type="checkbox" name="hobby" value="ymq">羽毛球
<br>
<!-- 连缀:给pojo对象的属性的属性赋值 -->
户籍省:<input type="text" name="address.province">
市:<input type="text" name="address.city">
县:<input type="text" name="address.county"><br/>
小说:<br/>
书名一:<input type="text" name="bookList[0].name" >
价格一:<input type="text" name="bookList[0].salary"><br/>
书名二:<input type="text" name="bookList[1].name" >
价格二:<input type="text" name="bookList[1].salary"><br/>
书名三:<input type="text" name="bookList[2].name" >
价格三:<input type="text" name="bookList[2].salary"><br/>
<input type="submit" value="提交">
</form>
后端接口:
@RequestMapping(value="/testParameter")
public String testParameter(User user) {
System.out.println(user);
return "abc";
}
Pojo对象://提供属性的getter、setter方法
public class User {
private String name;
private String password;
private Integer age;
private boolean gender;
private String[] hobby;
private Address address;
private List<Book> bookList;
}
2.响应相关操作
2.1同步响应
2.1.1同步请求响应数据的类型
String:逻辑视图名
ModelAndView:对象包含视图信息,视图中展示的数据信息
void:基本不用
@RequestMapping("/testMV") //返回ModelAndView
public ModelAndView testMV() {
ModelAndView mv = new ModelAndView("abc");
mv.addObject("username", "张三");
return mv;
}
2.1.2如何将controller数据携带到页面上
如果想将controller数据携带到页面上有两种方式:
- 第一种:使用ModelAndView作为方法的返回值类型
- 第二种:使用string类型返回【逻辑视图名】,是handler方法使用Model、Map、ModelMap类型的参数
本质:springmvc框架在底层把我们放入到ModelAndView|Map对象中的数据又解析出来放入到request域中的一份
2.1.3另一种形式的页面跳转
在controller层的方法返回以”redirect:”或者“forward:”开头的字符串来实现页面的重定向或者转发!而且这个字符串不会经过内部资源视图解析器的解析。
2.2异步响应
2.2.1如何使用静态资源文件
静态资源文件:html、css、js、img
如果在springmvc这儿想要使用静态资源文件,必须在springmvc.xml文件中配置一个标签:
<!-- 处理静态资源文件的标签:表示如果springmvc处理不了这个静态文件,springmvc就会将这个请求交给tomcat服务器处理 -->
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
controller如何返回json数据
前后端交互