控制器内容学习
@Controller注解
Controller注解用在类的上方,用于表示这是一个控制器,
被Spring扫描后会加载进Spring容器,当访问后之前配置的DispatcherServlet会找出所有的带有@Controller注解的类,
并查找其中带有@RequestMapping注解的方法,找到对应映射进行操作。
@RequestMapping注解
@RequestMapping注解可以用在两个地方,
一个是类的上方,
一个是方法的上方。
用在方法上方,代表访问路径的映射,访问路径对应着@RequestMapping的value值,如果@RequestMapping中只有一个属性则value可省略,直接写值。
用在类的上方代表一个模块的映射名,访问此类下的所有方法都得在其原映射路径下加上模块路径,例:如果要访问ling()方法,就得访问:/Student/ling。
例如 http://localhost:8080/Student/ling。
@RequestMapping设置访问方式:
@RequestMapping可以设置其访问方式,设置其中的method属性
method:
RequestMethod.POST : post访问方式
RequestMethod.GET : get访问方式
参数
servlet自带参数
SpringMVC中提供了方法自带赋值的三个参数HttpServletRequest, HttpServletResponse, HttpSession,
只要方法中有这些参数,SpringMVC就会自动赋值,这样就可以获取页面发过来的请求头和会话信息,跳转页面时也会自动带着操作后的信息跳转到新页面。
只要请求了servlet都会带着这些信息过来,如果要用就在请求映射方法的参数用就行。(后专门出一篇写这个 问题 )
自定义参数接收前端数据
逐个接收
逐个接收前端传来的参数,方法中参数名得跟前端传来数据的名称相匹配才能接收到数据
1 @RequestMapping("/parametric") 2 public String parametric(String name,String paw){ 3 4 System.out.println("name="+name); 5 6 System.out.println("paw="+paw); 7 8 return "chen"; 9 }
对象接收
public class Student { // 属性名和请求中参数名一样 //age是多余属性,前端没有这个参数 那我们接收到在这个参数就是null private String name; private String paw; private String age; // set| get方法 } @RequestMapping(value = "demo4") public String demo4(Student user){ System.out.println("demo4操作:"); System.out.println(user.toString()); return "chen"
对象接收的方法要求是前端传过来数据参数要跟对象的属性相匹配才能接受到数据,如果前端数据参数没有对象属性中的这个名称,那么这个属性就为null。
前端提交日期数据
只能用string类型取接受,不然会爆500错误
在后端把字符串转换为Date对象
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date parse = dateFormat.parse(birthday);
乱码问题
自定义过滤器
public class TestFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
web.xml中配置
<filter> <filter-name>encoding</filter-name> <filter-class>com.hjy.filter.TestFilter</filter-class> </filter> <filter-mapping> <filter-name>encoding</filter-name> <!--/*可以处理包括jsp页面在内的所有资源--> <url-pattern>/*</url-pattern> </filter-mapping>