SpringMVC-注解开发及常见用法

1.SpringMVC注解开发

使用注解开发,Controller中的方法的参数和返回值有限定,比配置开发灵活

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 
 		<!-- 包扫描,扫描该包下那些类和方法加了注解 -->				
		<context:component-scan base-package="com.woniu.controller"></context:component-scan>
</beans>

Controller

@Controller
@RequestMapping("demo") // 命名空间
public class myController {

	@RequestMapping("/my.do")
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
		ModelAndView mv = new ModelAndView();
		// 将数据存储到request域中
		mv.addObject("test", "handleRequest");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}
}

2.路径匹配规则

命名空间,多路径配置

// 命名空间,多路径配置
	@RequestMapping(value = { "/second.do", "/test.do" })
	public ModelAndView second(HttpServletRequest request, HttpServletResponse response){
		ModelAndView mv = new ModelAndView();
		// 将数据存储到request域中
		mv.addObject("test", "second");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}

请求路径支持通配符

// 请求路径支持通配符
	// 一个处理器对应多个请求路径
	@RequestMapping("/third*.do")
	public ModelAndView third(HttpServletRequest request, HttpServletResponse response){
		ModelAndView mv = new ModelAndView();
		// 将数据存储到request域中
		mv.addObject("test", "third");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}

	// “ * ”表示有且只有一层路径
	@RequestMapping("/*/four.do")
	public ModelAndView four(HttpServletRequest request, HttpServletResponse response){
		ModelAndView mv = new ModelAndView();
		// 将数据存储到request域中
		mv.addObject("test", "four");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}

	// " ** "表示没有,或一层,或多层路径都可以
	@RequestMapping("/**/five.do")
	public ModelAndView five(HttpServletRequest request, HttpServletResponse response){
		ModelAndView mv = new ModelAndView();
		// 将数据存储到request域中
		mv.addObject("test", "five");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}

3.限定请求方法的类型

// 限定请求方法的类型
	@RequestMapping(value = "/six.do", method = RequestMethod.POST)
	public ModelAndView six(HttpServletRequest request, HttpServletResponse response){
		ModelAndView mv = new ModelAndView();
		// 将数据存储到request域中
		mv.addObject("test", "six");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}

4.编码过滤器

SpringMVC的编码过滤器处理:post请求乱码和响应乱码

web.xml配置

<!-- 设置post请求与响应编码 -->
  <filter>
  	<filter-name>characterEncoding</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>
  	<init-param>
  		<param-name>forceEncoding</param-name>
  		<param-value>true</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>characterEncoding</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

5.参数校正

表单元素的name和处理器方法参数不一致

//校正参数
	//针对表单元素name值和处理器方法参数不一致
	@RequestMapping("/revise.do")
	public ModelAndView revise(HttpServletRequest req, HttpServletResponse resp,@RequestParam("sname")String name,@RequestParam("ssex")String sex){
		ModelAndView mv = new ModelAndView();
		System.out.println(name);
		System.out.println(sex);
		// 将数据存储到request域中
		mv.addObject("test", "six");
		// 默认就是请求转发
		mv.setViewName("/jsp/mvctest.jsp");
		return mv;
	}

6.处理器参数

可以是:request,response,session,model,接收请求参数

controller

@RequestMapping("/test.do")
	public ModelAndView model(HttpServletRequest req, HttpServletResponse resp,HttpSession session,Model model,Student student){
		//request,response
		resp.setContentType("text/html;charset=utf-8");
		String sname = req.getParameter("sname");
		int sage = Integer.parseInt(req.getParameter("sage"));
		char ssex = req.getParameter("ssex").charAt(0);
		int cid = Integer.parseInt(req.getParameter("cid"));
		//student
		System.out.println(student);
		//session
		session.setAttribute("demo", "测试");
		//model
		model.addAttribute("test", "modle");		
		return new ModelAndView("/jsp/mvctest.jsp");
	}

jsp

<form action="<c:url value='/demo/test.do'/>" method="POST">
		姓名:<input type="text" name="sname" value=""/>
		<br/>
		年龄:<input type="text" name="sage" value="" />
		<br/>
		性别:<input type="text" name="ssex" value="" />
		<br/>
		课程编号:<input type="text" name="cid" value="">
		<br/>
		学校编号:<input type="text" name="school.scid" value="">
		<br/>
		学校名称:<input type="text" name="school.scname" value="">
		<input type="submit" value="提交"/>
		</form>

实体类:

public class Student {
	private Integer sid;
	private String sname;
	private Integer sage;
	private Character ssex;
	private Integer cid;
	private School school;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值