学习视频
B站: mybatis-spring-springmvc-Java一站式学习 -java框架-ssm框架-idea-更新完毕
UP:黎曼的猜想
视频传送
springmvc在三层架构中的位置
RequestMapping注解属性
value:用于指定请求的URL
@RequestMapping(path="user") //"path"属性等同于"value"属性
public class RequestMappingTest{
@RequestMapping(path="hello")
public String testMethod(){
//*******
}
}
<!-- ***.jsp -->
<a href="user/hello">***</a>
method:用于指定请求的方式
@RequestMapping(method="RequestMethod.POST") //RequestMethod 枚举类
public String testMethod(){
//*****
}
params:用于指定限制请求参数的条件。要求请求的key和value必须和配置一样。
@RequestMapping(path="user") //"path"属性等同于"value"属性
public class RequestMappingTest{
@RequestMapping(path="hello",params="username=hehe")
public String testMethod(){
//*******
}
}
<!-- ***.jsp -->
<a href="user/hello?username=hehe">***</a>
headers:用于指定限制请求头的条件。
@RequestMapping(path="user") //"path"属性等同于"value"属性
public class RequestMappingTest{
@RequestMapping(path="hello",headers="Accept")
public String testMethod(){
//*******
}
}
请求参数的绑定
1.请求参数
@RequestMapping(path="user") //"path"属性等同于"value"属性
public class RequestMappingTest{
@RequestMapping(path="hello")
public String testMethod(String username,String password){
System.out.println(username); //hehe
System.out.println(password); //123
}
}
<!-- ***.jsp -->
<a href="user/hello?username=hehe&password=123">***</a>
2.实体类
public class Account{
private String username;
private String password;
private User user; //实体类 User的引用
}
@RequestMapping(path="user") //"path"属性等同于"value"属性
public class RequestMappingTest{
@RequestMapping(path="hello")
public String testMethod(Account account){
//****
}
}
<!-- ***.jsp-->
<form action="user/hello" method="post">
姓名:<input type="text" name="username" /><br/>
密码:<input type="text" name="password" /><br/>
用户姓名:<input type="text" name="user.username" />
用户密码:<input type="text" name="user.password" />
<input type="submit" value="提交" />
</form>
3.集合
public class Account{
private String username;
private String password;
private List<User> list;
private Map<String,User> map;
}
@RequestMapping(path="user") //"path"属性等同于"value"属性
public class RequestMappingTest{
@RequestMapping(path="hello")
public String testMethod(Account account){
//****
}
}
<!-- ***.jsp-->
<form action="user/hello" method="post">
姓名:<input type="text" name="username" /><br/>
密码:<input type="text" name="password" /><br/>
用户姓名:<input type="text" name="list[0].username" />
用户密码:<input type="text" name="list[0].password" />
用户姓名:<input type="text" name="map['one'].username" /> <!-- key = one-->
用户密码:<input type="text" name="map['one'].password" />
<input type="submit" value="提交" />
</form>
配置解决中文乱码的过滤器(web.xml)
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!--配置解决中文乱码的过滤器-->
<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>
</web-app>
自定义类型转换器
<!-- 注册自定义类型转换器 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="cn.itcast.utils.StringToDateConverter"/> //自定义转换类
</set>
</property>
</bean>
<!-- 开启Spring对MVC注解的支持 -->
<mvc:annotation-driven conversion-service="conversionService"/>
获取servlet原生API
@RequestMapping(path="/**")
public xxx servletTest(HttpServletRequest request,HttpServletResponse response){
// request
// response
HttpSession session = request.getSession();
ServletContex servletContex = session.getServletContex();
// ***
}
RequestBody注解(请求体)
<form action="**/testRequestBody" method="post">
姓名:<input type="text" name="username" />
密码:<input type="text" name="password" />
<input type="submit" value="提交" />
</form>
@RequestMapping(path="testRequestMapping")
public xxx testRequestBody(@RequestBody String body){
System.out.println(body); // username=**&password=**
}
配置前端控制器
<!--前端控制器,哪些静态资源不拦截-->
<mvc:resources location="/css/" mapping="/css/**"/>
<mvc:resources location="/images/" mapping="/images/**"/>
<mvc:resources location="/js/" mapping="/js/**"/>
ResponseBody注解
<script>
// 页面加载,绑定单击事件
$(function(){
$("#btn").click(function(){
// alert("hello btn");
// 发送ajax请求
$.ajax({
// 编写json格式,设置属性和值
url:"user/testAjax",
contentType:"application/json;charset=UTF-8",
data:'{"username":"hehe","password":"123","age":30}',
dataType:"json",
type:"post",
success:function(data){
// data服务器端响应的json的数据,进行解析
}
});
});
});
</script>
@RequestBody:将前端传递过来的json转换成实体类对象
@ResponseBody:将实体类对象转换成json传到前端(由springmvc框架实现)
/**
* 模拟异步请求响应
*/
@RequestMapping("/testAjax")
public @ResponseBody User testAjax(@RequestBody User user){
System.out.println("testAjax方法执行了...");
// 客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到user对象中
System.out.println(user);
// 做响应,模拟查询数据库
user.setUsername("haha");
user.setAge(40);
// 做响应
return user;
}