百度网站建设需要钱,做网站维护有前途吗,seo自媒体培训,成都网站制作龙兵科技一、引言
Spring MVC 是一种基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架#xff0c;它为开发 Web 应用提供了强大而灵活的解决方案。本文将通过一个简单的 Spring MVC 入门案例#xff0c;详细介绍其工作流程#xff0c;帮助读者深入理解 Spring MVC …一、引言
Spring MVC 是一种基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架它为开发 Web 应用提供了强大而灵活的解决方案。本文将通过一个简单的 Spring MVC 入门案例详细介绍其工作流程帮助读者深入理解 Spring MVC 的运行机制。
二、环境准备 在开始编写代码之前我们需要准备好开发环境。本案例使用 Maven 进行项目管理因此需要在 pom.xml 中添加必要的依赖。以下是 pom.xml 的代码 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.qcby/groupIdartifactId01/artifactIdpackagingwar/packagingversion1.0-SNAPSHOT/versionname01 Maven Webapp/nameurlhttp://maven.apache.org/url!-- 版本锁定 --propertiesspring.version5.3.23/spring.versionservlet.api.version4.0.1/servlet.api.versionjsp.api.version2.3.3/jsp.api.versionjunit.version4.13.2/junit.version/propertiesdependencies!-- Spring 相关依赖 --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion${spring.version}/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion${spring.version}/version/dependency!-- Servlet API --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion${servlet.api.version}/versionscopeprovided/scope/dependency!-- JSP API --dependencygroupIdjavax.servlet.jsp/groupIdartifactIdjavax.servlet.jsp-api/artifactIdversion${jsp.api.version}/versionscopeprovided/scope/dependency!-- 测试依赖 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/versionscopetest/scope/dependency/dependenciesbuildfinalName01/finalName/build
/project
这些依赖包含了 Spring 框架、Servlet API、JSP API 以及测试所需的 JUnit 库。 三、配置文件编写 3.1 web.xml 配置 web.xml 是 Web 应用的核心配置文件主要用于配置 Servlet、过滤器等。以下是 web.xml 的代码
?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1display-nameSpring MVC Application/display-name!-- 添加字符编码过滤器 --filterfilter-namecharacterEncodingFilter/filter-namefilter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-classinit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-paraminit-paramparam-nameforceEncoding/param-nameparam-valuetrue/param-value/init-param/filterfilter-mappingfilter-namecharacterEncodingFilter/filter-nameurl-pattern/*/url-pattern/filter-mappingservletservlet-namedispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-namedispatcherServlet/servlet-nameurl-pattern*.do/url-pattern/servlet-mapping
/web-app 字符编码过滤器用于设置请求和响应的字符编码为 UTF-8避免中文乱码问题。DispatcherServletSpring MVC 的核心 Servlet负责接收所有的请求并进行分发处理。通过 contextConfigLocation 指定其配置文件为 springmvc.xml。Servlet 映射将所有以 .do 结尾的请求映射到 DispatcherServlet。
3.2 springmvc.xml 配置 springmvc.xml 是 Spring MVC 的配置文件主要用于启用注解驱动、配置组件扫描和视图解析器。以下是 springmvc.xml 的代码
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:mvchttp://www.springframework.org/schema/mvcxmlns:contexthttp://www.springframework.org/schema/contextxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd!-- 启用注解驱动 --mvc:annotation-driven/!-- 配置组件扫描 --context:component-scan base-packagecn.tx.demo1/!-- 配置视图解析器 --bean classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/pages//property namesuffix value.jsp//bean
/beans 注解驱动启用 Spring MVC 的注解功能如 Controller、RequestMapping 等。组件扫描指定 Spring 容器扫描的包路径自动发现并注册带有 Controller 等注解的组件。视图解析器用于将控制器返回的逻辑视图名解析为实际的 JSP 页面路径。 四、控制器编写 控制器是 Spring MVC 中处理请求的核心组件负责接收请求、处理业务逻辑并返回视图。以下是 HelloController.java 的代码
package cn.tx.demo1;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;Controller
RequestMapping(say)
public class HelloController {RequestMapping(path hello.do, method RequestMethod.GET, params username)public String sayHello(String username) {try {PrintStream out new PrintStream(System.out, true, UTF-8);out.println(入门方法执行了2...);out.println(username);} catch (UnsupportedEncodingException e) {System.out.println(入门方法执行了2...);}return suc;}
} Controller 注解将该类标记为控制器Spring 容器会自动扫描并注册该类。RequestMapping 注解用于映射请求路径和请求方法。这里将 /say/hello.do 的 GET 请求映射到 sayHello 方法并且要求请求参数中包含 username。sayHello 方法接收 username 参数打印相关信息并返回逻辑视图名 suc。
五、视图页面编写 5.1 首页 index.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle入门程序/title
/head
body
%--超链接--%
h3入门/h3
form action/say/hello.do methodpost用户名:input typetext nameusername/button typesubmit提交/button
/form
a href/say/hello.do?username张三 入门程序/a
/body
/html 该页面提供了一个表单和一个超链接用于向 HelloController 发送请求。 5.2 成功页面 suc.jsp % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle成功/title
/head
body
h3入门成功了2.../h3
/body
/html
当请求处理成功后会跳转到该页面。 如下 六、工作流程分析 6.1 请求发送 用户在浏览器中访问 index.jsp 页面通过表单或超链接发送请求到 /say/hello.do。
6.2 请求接收
请求到达 DispatcherServletDispatcherServlet 根据 web.xml 中的配置将请求转发给 Spring MVC 框架处理
6.3 处理器映射
DispatcherServlet 根据 RequestMapping 注解的配置找到对应的控制器方法 HelloController.sayHello。
6.4 处理器执行
调用 sayHello 方法处理业务逻辑接收并打印 username 参数。
6.5 视图解析
sayHello 方法返回逻辑视图名 sucDispatcherServlet 根据 springmvc.xml 中配置的视图解析器将逻辑视图名解析为实际的 JSP 页面路径 /WEB-INF/pages/suc.jsp。
6.6 视图渲染
DispatcherServlet 将请求转发到 suc.jsp 页面渲染并返回给用户。