SpringMVC(二)SpringMVC的核心类和注解
1.DispatcherServlet在web.xml中配置<servlet><!--配置前端过滤器--><servlet_name>springmvc</servlet_name><servlet-class>org.springframework.web.servlet.DispatcherServlet&l...
1.DispatcherServlet
在web.xml中配置
<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-config.xml</param-value>
</init-param>
<!--表示容器在启动时立即加载-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.Controller注解类型
@Controller
public class FirstController{
...
}
为了保证spring能够找到控制器类,要在SpringMVC的配置文件中添加对应的扫描配置信息
(1)在配置文件的声明中引入spring-context
(2)使用<context:component-scan>元素指定需要扫描的类包
<!--指定需要扫描的包-->
<context:component-scan base-package="com.baidu.controller"/>
3.RequestMapping注解类型
RequestMapping注解类型用于映射一个请求或一个方法
3.1标注在方法上
@Controller
public class FirstController{
@RequestMapping(value="/firstController")
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response){
...
return mav;
}
}
3.2标注在类上
@Controller
@RequestMapping(value="/hello")
public class FirstController{
@RequestMapping(value="/firstController")
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response){
...
return mav;
}
}
3.3@RequestMapping注解的属性
属性名 | 类型 | 描述 |
name | String | 用于为映射地址指定别名 |
value | String[] | 默认属性,用于映射一个请求和一种方法,可以标注在一个方法或者一个类上 |
method | RequestMethod[] | 用于指定该方法用于处理哪种类型的请求方式,请求方式包括GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE method=RequestMethod.GET |
params | String[] | 用于指定Request中必须包含某些参数的值,才可以通过其标注的方法处理 |
headers | String[] | 用于指定Request中必须包含某些指定的header的值,才可以通过其标注的方法处理 |
conmuses | String[] | 用于指定处理请求的提交内容类型(Context-type),比如application/json、text/html |
produces | String[] | 用于指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型 |
4.组合注解
- @GetMapping:匹配GET方式的请求
- @PostMapping:匹配Post方式的请求
- @PutMapping:匹配PUT方式的请求
- @DeleteMapping:匹配Delete方式的请求
- @PatchMapping:匹配Patch方式的请求
@RequestMapping(value="/user/{id}")
public String selectUserById(String id){
...
}
5.请求处理方法的参数类型和返回类型
在请求处理方法中需要访问HttpSession对象,则可以添加HttpSession作为参数,Spring会将对象传递给方法
@RequestMapping(value="/firstController")
public ModelAndView(HttpSession session){
...
return mav;
}
请求处理方法返回的是一个ModelAndView类型的数据.除了此种类型外,请求处理方法还可以返回其它类型的数据.SpringMVC所支持的常见方法返回类型如下:
- ModelAndView
- Model
- Map
- View
- String
- void
- HttpEntity<?>或ResponseEntity<?>
- Callable<?>
- DeferredResult<?>
ModelAndView类型中可以添加Model数据,并指定视图
String类型的返回值可以跳转视图,但不能携带数据
void类型主要在异步请求时使用,它只返回数据,而不会跳转视图
案例:String类型的返回值不能携带数据,那么方法中是如何将数据带入视图页面的呢?通过Model参数类型
@RequestMapping(value="/firstController")
public String handleRequest(HttpServletRequest request,HttpServletResponse response,Model model){
//向模型对象中添加数据
model.addAttribute("msg","这是我的第一个SpringMVC程序")
//返回视图页面
return "/WEB-INF/jsp/first.jsp";
}
6.redirect重定向
demo:在修改用户信息操作后,将请求重定向到用户查询方法的实现代码:
@RequestMapping(value="/update")
public String update(HttpServletRequest request,HttpServletResponse response,Model model){
...
//重定向请求路径
return "/redirect:queryUser";
}
7.forward请求转发
demo:用户执行修改操作时,转发到用户修改页面的实现代码:
@RequestMapping(value="/toEdit")
public String update(HttpServletRequest request,HttpServletResponse response,Model model){
...
//请求转发
return "/forward:editUser";
}
8.ViewResolver(视图解析器)
SpringMVC中的视图解析器负责解析视图,可以通过在配置文件中定义一个ViewResolver来配置视图解析器
<!--定义视图解析器-->
<bean id="viewResolver" class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--设置前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--设置后缀-->
<property name="suffix" value=".jsp"/>
</bean>
demo:
(1)
(2)
更多推荐
所有评论(0)