SpringMVC 学习笔记1

来源:互联网 发布:网络虚拟信用卡申请 编辑:程序博客网 时间:2024/06/08 11:30

    • 一导入
    • 二创建springmvcxml配置文件
    • 三在webxml中配置SpringMVC
    • 四在springmvcxml中配置bean和映射器适配器视图解析器
      • BeanNameUrlHandlerMapping
      • SimpleUrlHandlerMapping
      • SimpleControllerHandlerAdapter和HttpRequestHandlerAdapter
      • InternalResourceViewResolver视图解析器
    • 六实现控制类和控制方法使用注解的方式
      • RequestMapping注解控制器类
      • RequestMapping注解控制方法
    • 注解RequestMapping的处理方法
      • 参数绑定
      • 返回的类型

一、导入

Maven:

<!--会自动依赖spring-web核心模块--><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-webmvc</artifactId>    <version>4.3.10.RELEASE</version></dependency>

二、创建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"></beans>

三、在web.xml中配置SpringMVC

<servlet>    <servlet-name>SpringMVC</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:springmvc.xml</param-value>    </init-param></servlet><servlet-mapping>    <servlet-name>SpringMVC</servlet-name>    <url-pattern>*.action</url-pattern></servlet-mapping>

注意:url-pattern可以是.action,也可以是/,但不能是/。因为/*时Spring会匹配到jsp页面,
而Spring又没有处理jsp页面的能力,后果就是浏览器把jsp页面当作资源文件直接下载。


四、在springmvc.xml中配置bean和映射器,适配器,视图解析器

  1. 配置bean,无非就是用bean标签或自动扫描加注解,没什么好说的。

  2. 配置地址映射器:

    1. BeanNameUrlHandlerMapping(根据控制器bean的name属性映射控制器。默认,如果就是使用这个,可不写)
    2. SimpleUrlHandlerMapping(根据property子标签映射控制器)
    3. RequestMappingHandlerMapping(注解)
  3. 配置处理器适配器(处理自己写的业务控制类):

    1. SimpleControllerHandlerAdapter(处理Controller的实现类。默认,如果就是使用这个,可不写)
    2. HttpRequestHandlerAdapter(处理HttpRequestHandler的实现类)
    3. RequestMappingHandlerAdapter(注解)
  4. 配置视图解析器(给所有访问的url统一加上前后缀):

    1. InternalResourceViewResolver

BeanNameUrlHandlerMapping

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><bean id="loginController" name="/login.action" class="com.springmvc.controller.LoginController"/>
要求:LoginController必须实现接口org.springframework.web.servlet.mvc.Controller。说明:当访问/login.action时,就会跳转到LoginController。优点是配置起来相对简单。缺点是必须在配置文件中显式地声明bean,自动扫描功能component-scan就没用了。

SimpleUrlHandlerMapping

<context:component-scan base-package="com.springmvc.controller"/><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    <!-- 这里的name必须是mappings -->    <property name="mappings">        <props>            <prop key="/register.action">registerController</prop>            <prop key="/login.action">loginController</prop>        </props>    </property></bean>
要求:LoginController和RegisterController必须实现接口Controller,注解@Controller。说明:registerController和loginController是由Spring自动推导出来的,不用手动设置。

SimpleControllerHandlerAdapter和HttpRequestHandlerAdapter

<!--处理适配器SimpleControllerHandlerAdapter,处理实现了Controller接口的类,可省略--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!-- 处理适配器HttpRequestHandlerAdapter,处理实现了Controller接口的类 --><bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

注:两者可同时存在。

InternalResourceViewResolver(视图解析器)

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/page"/>    <property name="suffix" value=".jsp"/></bean>

六、实现控制类和控制方法(使用注解的方式):

方法1【推荐】:配置文件添加\

@RequestMapping(注解控制器类)

value:控制方法地址的前缀。

@RequestMapping(注解控制方法)

params:规定参数,可以定义必须有(无)某个参数,参数必须(不)等于某个值。    "name" --> 必须有参数name    "name,!pass" --> 必须有参数name,没有参数pass    "name=wang" --> 必须有参数name且值为wang    "name!=wang" --> 必须有参数name且值不为wangmethod:规定请求方法。默认是GET或POST。

注解@RequestMapping的处理方法

参数绑定

详见《SpringMVC 学习笔记2 - 参数绑定》

返回的类型

返回Null:    声明的返回类型为void,String,ModelAndView均可,需要自己实现跳转或重定向。    不会加上InternalResourceViewResolver定义的前后缀。返回ModelAndView:    通过addObject设置传递的参数,效果等同于req.setAttribute + url显式传参。    通过setViewName设置需要跳转的页面,会加上InternalResourceViewResolver定义的前后缀。返回String:    1. 地址:"/{path}"(效果等同于modelAndView.setViewName,会加上前后缀)    2. 转发:"forward:/{path}"(效果等同于request.getRequestDispatcher.forward,不会加上前后缀)    3. 重定向:"redirect:/{path}"(效果等同于response.sendRedirect,不会加上前后缀,Intellij IDEA不会链接)注:转发和重定向开始的反斜杠代表根目录,而地址开始的反斜杠仅仅是作为分隔符。参数列表可以为空,也可以是request和response,还可以是url参数(自动通过名字获取request的参数),甚至可以是Model(类似于request)

使用示例:

// TODO : UserController完善后复制到这里作为示例
原创粉丝点击