2023-03-09
springmvc modelandview
1 SpringMVC基于XML配置開發
所謂配置式開發是指,“處理器類是程序員手工定義的、實現了特定接口的類,然后再在SpringMVC配置文件中對該類進行顯式的、明確的注冊”的開發方式。
1.1 SpringMVC基于XML配置開發分析
1.SpringMVC開發Web項目結構設計。
2.SpringMVC的執行流程概要分析。
1.2 SpringMVC基于XML配置開發實現
1.在項目的pom.xml文件中導入spring-webmvc依賴。
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.22</version>
</dependency>
</dependencies>
2.在WEB-INF文件夾下創建hello.jsp頁面。
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>SpringMVC基于XML配置開發</title>
</head>
<body>
<h1>SpringMVC基于XML配置開發案例</h1>
<p>${msg}</p>
</body>
</html>
3.編寫web容器的核心配置文件web.xml。
<!-- 配置SpringMVC前端控制器:所有的請求都將提交給DispatcherServlet類 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfigLocation:表示用于加載Bean的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<!-- 配置Servlet映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- url映射路徑,"/"表示能夠匹配瀏覽器提交過來的所有請求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
4.在com.cy.controller包下創建HelloController類,并編寫控制層的代碼。
package com.cy.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** 控制層:SpringMVC框架提供一個Controller接口 */
public class HelloController implements Controller {
/** 請求url找到對應的Controller類之后,會執行handlerRequest()方法 */
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
/** 需求:當瀏覽器訪問/hello請求時,服務器返回一個"Hello SpringMVC!!!"字符串給瀏覽器頁面顯示 */
/*
* 數據模型和視圖類:內部封裝了request對象獲取參數和賦值參數的操作
* 作用:替代了request.getParameter()和request.setAttribute()方法
*/
ModelAndView modelAndView = new ModelAndView();
// 設置需要返回的值
modelAndView.addObject("msg", " Hello SpringMVC!!!");
// 設置跳轉到指定的頁面;例如:訪問hello.jsp頁面,那么將視圖的名稱設置為hello
modelAndView.setViewName("hello");
return modelAndView;
}
}
5.在WEB-INF文件夾下創建SpringMVC的核心配置文件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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 注冊處理器映射器
作用:處理器映射器會根據請求的url與Spring容器中定義的處理器bean的name屬性值進行匹配,從而在Spring容器中找到處理器bean實例
說明:bean標簽如果沒有配置id屬性,那么Spring會為bean自動生成一個id,id的規則是:包名.類名#數字 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 注冊處理器
name="":表示對應著一個前端的請求,name屬性值必須以“/”開頭
class="":表示對應請求從DispatcherServlet發送過來后,對應的后臺處理類 -->
<bean name="/hello" class="com.cy.controller.HelloController"></bean>
<!-- 配置處理器適配器HandlerAdapter
作用:根據HandlerMapping返回的Controller,執行一個匹配規則,主要是找到對應的Handler去處理Controller中的方法 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 配置視圖解析器ViewResolver
作用:根據路徑的前綴后綴匹配找到相應的jsp頁面,然后再進行視圖渲染 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 路徑的前綴:/WEB-INF/ -->
<property name="prefix" value="/WEB-INF/"></property>
<!-- 路徑的后綴:.jsp -->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
6.啟動Tomcat服務,訪問http://localhost:8080/springmvc_01_introduction_war_exploded/hello地址進行進行測試。
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號