使用注解编写Spring MVC程序
- 注册组件扫描器
<context:component-scan base-package="com.ajiao.*"/>
- 配置注解驱动
<mvc:annotation-driven/>
- 注解一:@Controller:表示该类为一个Controller
- 注解二:@RequestMapping:表示为Controller内的方法,value属性所指定的url进行处理和相应。若@RequestMapping在类上,表示命名空间。
- 在@RequestMapping中,有method属性,该属性表示接受请求的提交方式。如:
@RequestMapping(value="/test.do",method = RequestMethod.POST)
当且仅当/test.do的请求方式是post才会执行。不写method的话,不管什么方式都会处理。 - @RequestMapping通过params属性指定请求中必须携带的参数
@RequestMapping(value="/test.do" , params={"name" , "age"})
接受表单提交的参数
- 带有表单的jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/regist.do" method="post">
姓名:<input type="text" name="username"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
- 创建Controller接受表单提交的值
@RequestMapping("/regist.do")
public ModelAndView regist(String username, int age) throws Exception{
ModelAndView mv = new ModelAndView();
mv.addObject("username", username);
mv.addObject("age", age);
mv.setViewName("result");
return mv;
}
- result.jsp显示值
<body>
用户名:${username}
<br>
年龄:${age}
</body>
在regist方法后面的参数有两个参数username 和 age,与表单中的name属性值一致,Spring MVC会自动赋值。
Spring MVC中会为以下五个参数自动赋值:
HttpServletRequest
HttpServletResponse
HttpSession
请求携带的参数
用于承载数据的Model
- 使用Spring MVC 提供的CharacterEncodingFilter过滤器解决乱码问题
<!--字符编码过滤器-->
<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>
<!--强制指定字符编码,即如果在request中指定了字符编码,那么也会为其强制指定当前设置的字符编码-->
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
使用对象接受表单参数
- javabean中定义Student类(属性名与表单的name保持一致,创建set和get方法)
- 在Controller类中将student作为参数传入
学习和参考自JAVA小猴子monkey1024