java企业级信息系统开发学习笔记06基于xml配置方式使用Spring MVC
文章目录
- 一、学习目标
- 二、Spring MVC概述
-
-
- 1、MVC架构
- 2、Spirng MVC
- 3、使用Spring MVC的两种方式
-
- 三、基于xml配置与注解的方式使用Spring MVC
-
- (一)创建Maven项目
- (二)添加相关依赖
- (三)给项目添加Web功能
- (四)创建三个页面
-
- 1、创建登录页面
- 2、创建登录成功页面
- 3、创建登录失败页面
- (五)创建登录控制器
- (六)创建Spring配置文件
- (七)创建Spring MVC配置文件
- (八)修改Web部署描述文件
- (九)配置Tomcat服务器
- (十)添加项目对Tomcat的依赖
- (十一)启动Tomcat服务器
一、学习目标
- 了解Spring MVC的基本原理
- 会基于XML配置方式使用Spring MVC
二、Spring MVC概述
1、MVC架构
MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。
- 模型:用于存储数据以及处理用户请求的业务逻辑。
- 视图:向控制器提交数据,在移动端或Web端显示模型中的数据。
- 控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。
2、Spirng MVC
- Spring MVC 是 Spring 提供给 Web 应用的框架设计。Spring MVC 是一个典型的教科书式的 MVC 构架,不像 Struts 等都是变种或者不是完全基于 MVC 系统的框架。Spring MVC 角色划分清晰,分工明细,并且和 Spring 框架无缝结合。作为当今业界最主流的 Web 开发框架,Spring MVC 已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。
- 实际上MVC只存在于三层架构的展现层,M实际上是数据模型,是包含数据的对象,在Spring MVC里有一个专门的类交Model,用于和V之间的数据交互和传值;V指的是视图页面,包含JSP、FreeMarker、Velocity、Thymeleaf、Tile等;C当然就是控制器(Spring MVC的注解@Controller的类)。
- Spring MVC工作流程
1.客户端请求提交到 DispatcherServlet。
2.由 DispatcherServlet 控制器寻找一个或多个 HandlerMapping,找到处理请求的 Controller。
3.DispatcherServlet 将请求提交到 Controller。
4.Controller 调用业务逻辑处理后返回 ModelAndView。
5.DispatcherServlet 寻找一个或多个 ViewResolver 视图解析器,找到 ModelAndView 指定的视图。
6.视图负责将结果显示到客户端。
3、使用Spring MVC的两种方式
- 基于XML配置与注解的方式使用Spring MVC
- 基于Java配置与注解的方式使用Spring MVC
三、基于xml配置与注解的方式使用Spring MVC
(一)创建Maven项目
(二)添加相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.huawei.spring</groupId><artifactId>SpringMvcDemo01</artifactId><version>1.0-SNAPSHOT</version><properties><!-- spring.version --><spring.version>5.3.25</spring.version></properties><dependencies><!--Spring核心--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><!--Spring Bean实体--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><!--Spring容器--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!--Spring测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--Spring Web功能--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><!--Spring MVC框架--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!--JSP标准标签库--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--Servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--日志框架--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>
</project>
(三)给项目添加Web功能
(四)创建三个页面
1、创建登录页面
<%--Created by IntelliJ IDEA.User: huaweiDate: 2023-03-08Time: 15:37To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>用户登录</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ></head><body><h3 style="text-align: center">用户登录</h3><form id="frmLogin" action="login" method="post"><table class="tb" border="1" cellpadding="10" style="margin: 0px auto"><tr><td align="center">账号</td><td><input id="username" type="text" name="username"/></td></tr><tr><td align="center">密码</td><td><input id="password" type="password" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录"/><input type="reset" value="重置"/></td></tr></table></form></body>
</html>
2、创建登录成功页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html><head><title>登录成功</title></head><body><h1 style="text-align: center">${username},登录成功!</h1></body>
</html>
3、创建登录失败页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html><head><title>登录失败</title></head><body><h1 style="text-align: center">${username},登录失败!</h1></body>
</html>
(五)创建登录控制器
package net.huawei.spring.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpSession;/* 功能:登录控制器* 作者:华卫* 日期:2023年03月08日*/
@Controller // 交给Spring容器来管理
public class LoginController {@PostMapping("/login") // 可用@RequestMapping("/login")public String login(@RequestParam("username") String username,@RequestParam("password") String password,HttpSession session) {// 将登录表单提交的用户名写入会话session.setAttribute("username", username);// 判断用户是否登录成功if (username.equals("howard") && password.equals("903213")) {// 返回逻辑视图名success,表明跳转到登录成功页面return "success";} // 返回逻辑视图名failure,表明跳转到登录失败页面return "failure"; }
}
(六)创建Spring配置文件
<?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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--组件扫描--><context:component-scan base-package="net.huawei.spring" /></beans>
(七)创建Spring MVC配置文件
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--采用注解驱动--><mvc:annotation-driven/><!--扫描控制器--><context:component-scan base-package="net.huawei.spring.controller"/><!--定义内部资源视图解析器:负责解析控制器里从逻辑视图到物理页面的映射--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/views/"/> <!--路径--><property name="suffix" value=".jsp"/> <!--扩展名--></bean>
</beans>
(八)修改Web部署描述文件
<?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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--设置启动首页--><welcome-file-list><welcome-file>/WEB-INF/views/login.jsp</welcome-file></welcome-file-list><!--Spring容器加载监听器,让Spring随着Web项目启动而初始化--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--指定Spring配置文件位置--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:mvc/spring-config.xml</param-value></context-param><!--注册Spring前端控制器,加载Spring MVC配置文件--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:mvc/spring-mvc-config.xml</param-value></init-param><load-on-startup>1</load-on-startup> <!--数字越小,启动级别越高--></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern> <!--“/”表明拦截一切请求--></servlet-mapping><!--设置字符编码过滤器--><filter><filter-name>Character Encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>Character Encoding</filter-name><url-pattern>/*</url-pattern> <!--/*表明过滤一切请求--></filter-mapping>
</web-app>
(九)配置Tomcat服务器
(十)添加项目对Tomcat的依赖
(十一)启动Tomcat服务器