前端控制器DispatcherServlet

DispatcherServlet全名是org.springframework.web.servlet.DispatcherServlet,程序中充当前端控制器的角色,在使用中将其配置在项目的web.xml中其配置代码如下

    <!--配置springmvc前端控制器-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param><!--初始化时加载配置文件-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param><!---->
        <load-on-startup>1</load-on-startup><!--配置容器启动时去加载该servlet-->
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern><!--服务器启动时加载servlet-->
    </servlet-mapping>

Controller注解类型

org.springframework.stereotype.Controller注解类型用于知识Spring类的实例是一个控制器,其注解形式为@Controller,

import org.springframework.stereotype.Controller;
...
@Controller
public class Usercontroller {
	...
    }
}

未来保证Spring可以找到控制器类,还需要在Spring MVC的配置文件中添加相应的扫描配置信息,具体如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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">
        <!--Controller组件扫描-->
        <context:component-scan base-package="com.example.controller"/>
</beans>

新加的内容为链接中带Context的,这些为context命名空间,用于包扫描使用

@RequestMapping注解类型

@RequestMapping注解的使用

Spring听过@Controller找到相应的控制类后,还需要知道控制器内部对每一个请求是如何处理的,这就需要使用import org.springframework.web.bind.annotation.RequestMapping;注解类型,RequestMapping注解类型用于映射一个请求或者方法,其注解方式为@RequestMapping,可以使用法术界标注在意个方法或一个类上.
标注在方法上

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class Usercontroller {
    @RequestMapping("/save")//注解里的参数写客户端访问该方法的路径
    public String save(){
        System.out.println("controller 正在运行");
        return "index.jsp";//转到index.jsp页面
    }
}

这时上面代码的save()方法就可以通过http://localhost:8080/demo4_war_exploded/save来进行访问了
标注在类上

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class Usercontroller {
    @RequestMapping("/save")//注解里的参数写客户端访问该方法的路径
    public String save(){
        System.out.println("controller 正在运行");
        return "/index.jsp";//转到index.jsp页面
    }
}

这时上面代码的save()方法就可以通过http://localhost:8080/demo4_war_exploded/user/save来进行访问了

@RequestMapping注解的属性

@RequestMapping注解的属性有六种,分别是value、method、produces、consumes、header、params。这六种属性是与的关系,联合使用会使请求地址的映射更加精确。

  • name: 为映射指定别名
  • value:指定请求的实际地址,像/action/info这样的。作为单一属性出现时可以省略
  • method:指定请求的method类型, GET、POST、PUT、DELETE等。
  • produces:它的作用是指定返回内容的类型,只有当request请求头中Accept属性包含该produces指定的类型才能返回数据成功。注意:请求头中国Accept代表发送端(客户端)希望接受的数据类型,比如:Accept:text/xml(application/json),代表客户端希望接受的数据类型是xml(json)类型。
  • consumes:它的作用是指定request请求提交的内容类型(Content-Type),例如application/json, text/html。注意:Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型,比如:Content-Type:text/html(application/json),代表发送端发送的数据格式是html(json)。
  • params:指定request请求地址中必须包含某些参数值,才让该方法处理。当使用params属性时,你可以让多个处理方法处理同一个URL请求地址,只需要设置请求地址的参数不同即可。支持简单的表达式:
  • header:指定request请求中必须包含某些指定的请求头header的值,才能让该方法处理请求。
    示例代码:

组合注解

  • @GetMapping 匹配get方式请求
  • @Postmapping 匹配post方式请求
    使用组合注解可以省略method属性,从而简化代码

请求处理方法的参数类型和返回类型

redirect重定向

return "redirect:queryUser";//重定向到用户查询方法

forward请求转发

return "forward:editUser";//转发道用户修改页面

ViewRessolver(视图解析器)

配置视图解析器在springmvc-config.xml中

        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <!--设置前缀-->
                <property name="prefix" value="/"></property>
                <!--设置后缀-->
                <property name="suffix" value=".jsp"/>
        </bean>

这样设置后在之后定义的视图路径便可以简化例如

        return "/index.jsp";//转到index.jsp页面

简化为

        return "index";//转到index.jsp页面
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐