您好,登錄后才能下訂單哦!
這篇文章主要介紹了SpringMVC實現Controller的方法有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringMVC實現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配置文件中添加,如下信息;
<bean class="MyController1" id="controller1"/>
實現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配置文件中添加,如下信息;
<bean class="MyController2" id="controller2"/>
全注解,開發中寫的@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文件中必須增加上掃描組件:
<context:component-scan base-package="需要掃描的包路徑"/>
控制器負責解析用戶的請求并將其轉換為一個模型
在SpringMVC中一個控制器可以包含多個方法
SpringMVC中對于Controller的配置方式
實現Controller接口
注解實現Controller
1、實現Controller接口
1、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>
2、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>
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
<bean id="/test1" class="com.springmvc.controller.Test1Controller"/>
2、注解實現Controller
1、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>
2、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>
3、Test2Controller
//被這個注解的類中的所有方法,如果返回值是String,并且有具體頁面可以跳轉,那么就會被視圖解析器解析; @Controller public class Test2Controller { @RequestMapping("/t2") public String test2(Model model){ model.addAttribute("msg","注解實現Controller"); return "test"; } }
4、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的方法有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。