用python做网站不常见,山东美建站,上海官网,wordpress怎么拷贝虽然目前大多数都是使用springboot来开发java程序#xff0c;或者使用其来为其他端提供接口#xff0c;而为其他端提供接口#xff0c;这些功能都是依靠springmvc实现的#xff0c;所以有必要学习一下spring-mvc#xff0c;这样才能更好的学习springboot。
一#xff0c…虽然目前大多数都是使用springboot来开发java程序或者使用其来为其他端提供接口而为其他端提供接口这些功能都是依靠springmvc实现的所以有必要学习一下spring-mvc这样才能更好的学习springboot。
一Hello World
springMvc的第一篇先来使用springMvc来创建一个项目把它部署到Tomcat然后发起请求在网页上显示Hello World。熟悉一下springMvc的使用。
1创建Maven项目
创建时选中使用模板创建
2添加依赖
?xml version1.0 encodingUTF-8?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/xsd/maven-4.0.0.xsdparentartifactIdspringmvc-parent/artifactIdgroupIdcom.chen/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactId01-helloworld/artifactIdpackagingwar/packagingname01-helloworld Maven Webapp/name!-- FIXME change it to the projects website --urlhttp://www.example.com/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target/propertiesdependencies!-- 添加springmvc依赖 --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.6/version/dependency!-- 添加servlet 依赖 --dependencygroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactIdversion5.0.0-M1/versionscopeprovided/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/versionscopetest/scope/dependency/dependencies
/project
3配置web.xml
web.xml在项目创建完成时的版本可能太低需要替换高版本的。 先删除旧的低版本 添加新版本 配置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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--声明springmvc核心配置对象DispatcherServlet,这是一个servlet这个servlet的url-parttern(映射路径)配置的是*.do表示以*.do所有的请求都发送给DispatcherServlet这个servlet去处理--servletservlet-namedispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-param!-- contextConfigLocation 用来指定springmvc配置文件的位置contextConfigLocation是 DispatcherServlet的一个私有属性--param-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc.xml/param-value/init-param!-- load-on-startup表示web容器启动的时当前对象创建的顺序值越小初始化越早大于等于0 --load-on-startup0/load-on-startup/servletservlet-mappingservlet-namedispatcherServlet/servlet-nameurl-pattern*.do/url-pattern/servlet-mapping
/web-app4,添加springmvc配置文件 配置如下
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://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!-- springmvc容器也就是一个spring容器会扫描指定包中的组件将其注册到springmvc容器中 --context:component-scan base-packagecom.chen.controller/
/beans5创建HelloController
这里的包路径要和springmvc.xml配置的包扫描路径一样。 只有一个hello方法方法上面添加了一个RequestMapping 注解是Springmvc中的一个注解value属性用来指定一个url列表springmvc会将这些指定的url请求转发给当前方法处理。
package com.chen.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;/*** Author Chenxc* Date 2024.01.08 15:02*/
Controller
public class HelloController {/*** RequestMapping用来表示url和方法的映射* value属性用来指定一个url列表springmvc会将这些指定的url请求转发给当前方法处理* return*/RequestMapping(/hello)public ModelAndView hello() {ModelAndView modelAndView new ModelAndView();modelAndView.setViewName(/WEB-INF/view/hello.jsp);return modelAndView;}
}hello.jsp %--Created by IntelliJ IDEA.User: AdministratorDate: 2024.01.08Time: 15:03To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitlehelloWorld/title
/head
body
h1Hello World!/h1
/body
/html
6部署到tomcat中 启动 启动成功后访问: http://localhost:8060/hello.do 7,SpringMVC处理器请的过程
1tomcat启动的时候会初始化DispatcherServletDispatcherServlet中会创建一个springmvc容器就是我们熟悉的spring容器ApplicationContext这个容器的类型是WebApplicationContext,容器会加载web.xml中contextConfigLocation指定的springmvc配置文件。 2springmvc.xml中指定了扫描包的规则。指定了要扫描的包路径而HelloController符合这个扫描规则所以会被注册到springmvc容器中。 3当发起*.do请求的时候请求会到达DispatcherServlet中央处理器中央处理器会根据请求路径去springmvc容器中找到能够处理这个请求的方法具体由哪个方法来处理这个请求这里就是通过RequestMapping来匹配的这个注解可以将请求和方法进行映射匹配的请求会被RequestMapping标注的方法处理所以在这个步骤中springmvc容器会发现HelloController这个bean的hello方法方法可以处理/hello.do请求
4DispatcherServlet中通过反射来调用helloController这个bean的hello方法
5DispatcherServlet接收到了hello方法的返回值
6DispatcherServlet根据hello方法的返回值做跳转操作相当于 request.getRequestDispatcher(“/WEB-INF/view/hello.jsp”).forward(request,response);