SpringMVC 学习笔记1 - 配置与使用

一、导入

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且值不为wang

method:规定请求方法。默认是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完善后复制到这里作为示例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值