第十二章SpringMVC的核心类与注解
目录前端控制器DispatcherServletController注解类型@RequestMapping注解类型@RequestMapping注解的使用@RequestMapping注解的属性组合注解请求处理方法的参数类型和返回类型ViewRessolver(视图解析器)前端控制器DispatcherServletDispatcherServlet全名是org.springframework.w
目录
前端控制器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页面
更多推荐
所有评论(0)