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注解的属性

@RequestMapping注解的属性
属性名类型描述
nameString用于为映射地址指定别名
valueString[]默认属性,用于映射一个请求和一种方法,可以标注在一个方法或者一个类上
methodRequestMethod[]

用于指定该方法用于处理哪种类型的请求方式,请求方式包括GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE

method=RequestMethod.GET

paramsString[]用于指定Request中必须包含某些参数的值,才可以通过其标注的方法处理
headersString[]用于指定Request中必须包含某些指定的header的值,才可以通过其标注的方法处理
conmusesString[]用于指定处理请求的提交内容类型(Context-type),比如application/json、text/html
producesString[]用于指定返回的内容类型,返回的内容类型必须是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)

 

 

 

 

 

 

Logo

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

更多推荐