SpringMVC实现Controller的三种方式总结

网友投稿 312 2022-08-26


SpringMVC实现Controller的三种方式总结

目录实现Controller的三种方式1.实现Controller接口2.实现HttpRequestHandler接口3.全注解关于SpringMVC的控制器(Controller)控制器Controller

实现Controller的三种方式

1.实现Controller接口

实现Controller接口,重写handleRequest方法,ModelAndView对象是一个模型视图对象,既可以添加数据,又可以保存页面信息,并且处理请求的方式是转发。这个对象要拆成两部分来看

model和view。转发到下一个页面之后,会把 model中的数据渲染到view中展示。在页面可以使用el表达式获取。Model中数据的范围是 request。

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* @className: PACKAGE_NAME.MyController1

* @description: TODO

* @author: ych

* @create: 2021-06-02 20:25

*/

public class MyController1 implements Controller {

@Override

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

//实例化ModelAndView对象

ModelAndView modelAndView = new ModelAndView();

//放数据,相当于request.setAttribute("msg", "我是数据");

modelAndView.addObject("msg", "我是数据");

//放视图

modelAndView.setViewName("forward:/WEB-INF/jsp/show.jsp");

return modelAndView;

}

}

Spring-mvc.xml配置文件中添加,如下信息;

2.实现HttpRequestHandler接口

实现HttpRequestHandler接口,重写 handleRequest方法。这个实现方式与servlet 基本一致。

import org.springframework.web.HttpRequestHandler;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

/**

* @className: PACKAGE_NAME.MyController2

* @description: TODO

* @author: ych

* @create: 2021-06-02 20:28

*/

public class MyController2 implements HttpRequestHandler {

@Override

public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//共享数据到request

request.setAttribute("msg", "我是数据");

//请求转发

request.getRequestDispatcher("/WEB-INF/jsp/show.jsp").forward(request, response);

}

}

Spring-mvc.xml配置文件中添加,如下信息;

3.全注解

全注解,开发中写的@Controller注解必须配合扫描才能变成控制器。扫描组件会把头部带有注解的类管理起来。

@RequestMapping是提供请求访问路径的注解,比如UserController上添加的@RequestMapping(“/”),这是相对路径,相对于整个程序来说的,所以可以在项目下直接访问到这个控制器类。

方法 test的头部添加@RequestMapping(“/test.do”),表示访问到这个控制器类之后,在访问路径上再添加上“/test.do”才能访问到这个方法。

一个注解控制器类中可以定义很多的方法,只需要在方法头部添加不同的@RequestMapping 的值就可以吧这些方法作为不同的控制器使用,所以注解模式在开发中最常用。

import org.springframework.stereotype.Controller;

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

import org.springframework.web.servlet.ModelAndView;

/**

* @className: PACKAGE_NAME.MyController3

* @description: TODO

* @author: ych

* @create: 2021-06-02 20:32

*/

@Controller

@RequestMapping("/")

public class MyController3 {

@RequestMapping("/test1.do")

public ModelAndView test(){

//创建模型视图对象

ModelAndView modelAndView = new ModelAndView();

//添加模型数据,相当于request.setAttribute("msg", "helloworld");

modelAndView.addObject("msg", "helloworld");

//放视图

modelAndView.setViewName("forward:/WEB-INF/jsp/show.jsp");

return modelAndView;

}

}

在spring-mvc.xml文件中必须增加上扫描组件:

关于SpringMVC的控制器(Controller)

控制器Controller

控制器负责解析用户的请求并将其转换为一个模型

在SpringMVC中一个控制器可以包含多个方法

SpringMVC中对于Controller的配置方式

实现Controller接口注解实现Controller

1、实现Controller接口

1、web.xml

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc-servlet.xml

1

springmvc

/

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc-servlet.xml

1

springmvc

/

2、springmvc-servlet.xml

3、创建Controller类

package com.springmvc.controller;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class Test1Controller implements Controller {

public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("msg","Controller");

modelAndView.setViewName("test");

return modelAndView;

}

}

在springmvc-servlet.xml中为Test1Controller注册bean

2、注解实现Controller

1、web.xml

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc-servlet.xml

1

springmvc

/

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

springmvc

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:springmvc-servlet.xml

1

springmvc

/

2、springmvc-servlet.xml

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:context="http://springframework.org/schema/context"

xmlns:mvc="http://springframework.org/schema/mvc"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans.xsd

http://springframework.org/schema/context

https://springframework.org/schema/context/spring-context.xsd

http://springframework.org/schema/mvc

https://springframework.org/schema/mvc/spring-mvc.xsd">

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:context="http://springframework.org/schema/context"

xmlns:mvc="http://springframework.org/schema/mvc"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans.xsd

http://springframework.org/schema/context

https://springframework.org/schema/context/spring-context.xsd

http://springframework.org/schema/mvc

https://springframework.org/schema/mvc/spring-mvc.xsd">

3、Test2Controller

//被这个注解的类中的所有方法,如果返回值是String,并且有具体页面可以跳转,那么就会被视图解析器解析;

@Controller

public class Test2Controller {

@RequestMapping("/t2")

public String test2(Model model){

modhttp://el.addAttribute("msg","注解实现Controller");

return "test";

}

}

4、test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

${msg}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:​​Python从门到精通(八):元类-01-元类
下一篇:字符串格式化(js 字符串格式化)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~