SpringMvc(2)-10.9映射

ant风格的请求路径
? 单字符
* 任意个字符(0或多个)
** 任意目录

@RequestMapping(value=“welcome3/**/test”)
接受示例:
a href=“welcome3/abc/xyz/abccc/test”

<a href="handler/welcome5/zs">...</a>

通过@PathVariable获取动态参数

public String  welcome5(@PathVariable("name") String name ) {
	System.out.println(name);
	return "success" ;
}

REST风格:软件编程风格

Springmvc:
GET:查
POST:增
DELETE:删
PUT:改

普通浏览器只支持get、post方式;其他请求方式如delelte、put请求是通过过滤器新加入的支持。

springmvc实现:put、post请求方式的步骤
a.增加过滤器

	<!-- 增加HiddenHttpMethodFilte过滤器:目的是给普通浏览器增加put|delete请求方式 -->
	<filter>
			<filter-name>HiddenHttpMethodFilte</filter-name>
			<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
	</filter>
	
	<filter-mapping>
			<filter-name>HiddenHttpMethodFilte</filter-name>
			<url-pattern>/*</url-pattern>
	</filter-mapping>

b.表单

	<form action="handler/testRest/1234" method="post">
		<input type="hidden"  name="_method" value="DELETE"/>
		<input type="submit" value="删">
	</form>

i:必须是post方式
ii:通过隐藏域的value值设置实际的请求方式DELETE|PUT
在这里插入图片描述

c.控制器

		@RequestMapping(value="testRest/{id}",method=RequestMethod.DELETE)
		public String  testDelete(@PathVariable("id") Integer id) {
			System.out.println("delete:删 " +id);
			//Service层实现真正的删
			return "success" ;
		}
通过method=RequestMethod.DELETE匹配具体的请求方式

此外,可以发现,当映射名相同时@RequestMapping(value="testRest),可以通过method处理不同的请求。
	<form action="handler/testRest/1234" method="post">
		<input type="submit" value="增">
	</form>
	
	<form action="handler/testRest/1234" method="post">
		<input type="hidden"  name="_method" value="DELETE"/>
		<input type="submit" value="删">
	</form>
	
		<form action="handler/testRest/1234" method="post">
			<input type="hidden"  name="_method" value="PUT"/>
		<input type="submit" value="改">
	</form>
	
	<form action="handler/testRest/1234" method="get">
		<input type="submit" value="查">
	</form>

@RequestParam(“uname”) String name,@RequestParam(value=“uage”,required=false,defaultValue=“23”)
@RequestParam(“uname”):接受前台传递的值,等价于request.getParameter(“uname”);
required=false:该属性不是必须的
defaultValue=“23”:默认值23

@RequestMapping(value="testParam")
		public String  testParam(@RequestParam("uname") String name,@RequestParam(value="uage",required=false,defaultValue="23") Integer age) {
//			String name = request.getParameter("uname");
			
			System.out.println(name);
			System.out.println(age);
			return "success" ;
		}
	<form action="handler/testParam" method="get">
		name:<input name="uname" type="text" />
		<input type="submit" value="查">
	</form>

获取请求头信息@RequestHeader

public String  testRequestHeader(@RequestHeader("Accept-Language")  String al  ) {

通过@RequestHeader(“Accept-Language”) String al 获取请求头中的Accept-Language值,并将值保存再al变量中

通过mvc获取cookie值(JSESSIONID)
@CookieValue
(前置知识:服务端在接受客户端第一次请求时,会给该客户端分配一个session(该session包含一个sessionId)),
并且服务端会在第一次响应客户端时,请该sessionId赋值给JSESSIONID并传递给客户端的cookie中。
在这里插入图片描述

		@RequestMapping(value="testCookieValue")
		public String  testCookieValue(@CookieValue("JSESSIONID") String jsessionId) 							{
			System.out.println( jsessionId);
			return "success" ;
		}

小结:
SpringMVC处理各种参数的流程/逻辑:
请求:前端发请求a -> @RequestMappting(“a”)
处理请求中的参数xyz:
@RequestMappting(“a”)

public String aa(@Xxx注解(“xyz”) xyz) {

}

使用对象(实体类Student)接受请求参数

@RequestMapping(value="testObjectProperties")
		public String  testObjectProperties(Student student) {//student属性必须和form表单中的属性Name值一致(支持级联属性)
		/*
			String name = 	request.getParameter("name");
			int age= Integer.parseInt(request.getParameter("age"))	;
			String haddrss = 	request.getParameter("homeaddress");
			String saddress = 	request.getParameter("schooladdress");
			Address address = new Address();
			address.setHomeAddress(haddrss);
			address.setSchoolAddress(saddress);
		
			Student student = new Student();
			student.setName(name);
			student.setName(age);
			student.setAddress(address);
		*/	
			System.out.println(student.getId()+","+student.getName()+","+student.getAddress().getHomeAddress()+","+student.getAddress().getSchoolAddress());
			return "success" ;
		}
	<form action="handler/testObjectProperties" method="post">
		id:<input name="id" type="text" />
		name:<input name="name" type="text" />
		家庭地址:<input name="address.homeAddress" type="text" />
		学校地址:<input name="address.schoolAddress" type="text" />
		<input type="submit" value="查">
	</form>

在SpringMVC中使用原生态的Servlet API:HttpServletRequest---->直接将servlet-api中的类、接口等写在springMVC所映射的方法参数中即可:

		@RequestMapping(value="testServletAPI")
		public String testServletAPI(HttpServletRequest  request,HttpServletResponse response) {
//			request.getParameter("uname") ;
			System.out.println(request);//不需要new();
			return "success" ;
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值