springmvc的学习笔记

学习视频

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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值