SpringMVC实现Controller的方式有哪些
这篇文章主要介绍了SpringMVC实现Controller的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMVC实现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;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配置文件中添加,如下信息;
<bean class="MyController1" id="controller1"/>
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;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配置文件中添加,如下信息;
<bean class="MyController2" id="controller2"/>
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;@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文件中必须增加上扫描组件:
<context:component-scan base-package="需要扫描的包路径"/>
关于SpringMVC的控制器(Controller)
控制器Controller
控制器负责解析用户的请求并将其转换为一个模型
在SpringMVC中一个控制器可以包含多个方法
SpringMVC中对于Controller的配置方式
实现Controller接口
注解实现Controller
1、实现Controller接口
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.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"> <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-servlet.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></web-app>
springmvc-servlet.xml
<context:component-scan base-package="com.springmvc.controller"/> <mvc:default-servlet-handler/> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
创建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
<bean id="/test1" class="com.springmvc.controller.Test1Controller"/>
2、注解实现Controller
web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.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"> <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-servlet.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></web-app>
springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 自动扫描指定的包,下面所有注解类交给IOC容器管理 --> <context:component-scan base-package="com.springmvc.controller"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean><!-- <bean id="/test1" class="com.springmvc.controller.Test1Controller"/>--></beans>
Test2Controller
//被这个注解的类中的所有方法,如果返回值是String,并且有具体页面可以跳转,那么就会被视图解析器解析; @Controller public class Test2Controller { @RequestMapping("/t2") public String test2(Model model){ model.addAttribute("msg","注解实现Controller"); return "test"; } }
test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title></head><body>${msg}</body></html>
关于“SpringMVC实现Controller的方法有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringMVC实现Controller的方法有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341