好网站建设网站网页设计素材网站大全

当前位置: 首页 > news >正文

好网站建设网站,网页设计素材网站大全,网页排版精美的中文网站,国内摄影作品网站SpringMVC简介 什么是MVC MVC是一种软件架构的思想#xff0c;将软件按照模型、视图、控制器来划分 M:Model#xff0c;模型层#xff0c;指工程中的JavaBean#xff0c;作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的#xff0c;如 Studen…SpringMVC简介 什么是MVC MVC是一种软件架构的思想将软件按照模型、视图、控制器来划分 M:Model模型层指工程中的JavaBean作用是处理数据 JavaBean分为两类: 一类称为实体类Bean:专门存储业务数据的如 Student、User 等一类称为业务处理 Bean:指 Service 或 Dao 对象专门用于处理业务逻辑和数据访问 V:View视图层指工程中的html或jsp等页面作用是与用户进行交互展示数据 C:Controller控制层指工程中的servlet作用是接收请求和响应浏览器 MVC的工作流程: 用户通过视图层发送请求到服务器在服务器中请求被Controller接收Controller 调用相应的Model层处理请求处理完毕将结果返回到ControllerController再根据请求处理的结果 找到相应的View视图渲染数据后最终响应给浏览器 什么是SpringMVC SpringMVC是Spring的一个后续产品是Spring的一个子项目 SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、 WebWork、Strust2 等诸多产品的历代更迭之后目前业界普遍选择了 SpringMVC 作为 Java EE 项目 表述层开发的首选方案。 注: 三层架构分为表述层(或表示层)、业务逻辑层、数据访问层表述层表示前台页面和后台 servlet SpringMVC的特点 Spring 家族原生产品与 IOC 容器等基础设施无缝对接基于原生的Servlet通过了功能强大的前端控制器DispatcherServlet对请求和响应进行统一 处理表述层各细分领域需要解决的问题全方位覆盖提供全面解决方案代码清新简洁大幅度提升开发效率内部组件化程度高可插拔式组件即插即用想要什么功能配置相应组件即可性能卓著尤其适合现代大型、超大型互联网项目要求 入门案例 创建maven工程 添加web模块主要是注意web.xml路径 打包方式war 引入依赖
dependencies!– SpringMVC –dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.1/version/dependency !– 日志 – dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.2.3/version/dependency!– ServletAPI –dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope/dependency !– Spring5和Thymeleaf整合包 – dependencygroupIdorg.thymeleaf/groupIdartifactIdthymeleaf-spring5/artifactIdversion3.0.12.RELEASE/version/dependency /dependencies配置web.xml 注册SpringMVC的前端控制器DispatcherServlet 默认配置方式 此配置作用下SpringMVC的配置文件默认位于WEB-INF下默认名称为 servlet-name- servlet.xml例如以下配置所对应SpringMVC的配置文件位于WEB-INF下文件名为springMVC- servlet.xml !– 配置SpringMVC的前端控制器对浏览器发送的请求统一进行处理 – servletservlet-namespringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet- class /servlet servlet-mappingservlet-namespringMVC/servlet-name!– 设置springMVC的核心控制器所能处理的请求的请求路径 /所匹配的请求可以是/login或.html或.js或.css方式的请求路径 但是/不能匹配.jsp请求路径的请求 –url-pattern//url-pattern /servlet-mapping拓展配置方式 可通过init-param标签设置SpringMVC配置文件的位置和名称通过load-on-startup标签设置 SpringMVC前端控制器DispatcherServlet的初始化时间 !– 配置SpringMVC的前端控制器对浏览器发送的请求统一进行处理 – servletservlet-namespringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet- class !– 通过初始化参数指定SpringMVC配置文件的位置和名称 – init-param !– contextConfigLocation为固定值 – param-namecontextConfigLocation/param-name !– 使用classpath:表示从类路径查找配置文件例如maven工程中的 src/main/resources –param-valueclasspath:springMVC.xml/param-value/init-param !– 作为框架的核心组件在启动过程中有大量的初始化操作要做 而这些操作放在第一次请求时才执行会严重影响访问速度 因此需要通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时 –load-on-startup1/load-on-startup /servlet servlet-mappingservlet-namespringMVC/servlet-name!– 设置springMVC的核心控制器所能处理的请求的请求路径 /所匹配的请求可以是/login或.html或.js或.css方式的请求路径 但是/不能匹配.jsp请求路径的请求 –url-pattern//url-pattern /servlet-mapping注url-pattern标签中使用/和/*的区别: /所匹配的请求可以是/login或.html或.js或.css方式的请求路径但是/不能匹配.jsp请求路径的请求 因此就可以避免在访问jsp页面时该请求被DispatcherServlet处理从而找不到相应的页面 /*则能够匹配所有请求例如在使用过滤器时若需要对所有请求进行过滤就需要使用/*的写法 创建请求控制器 由于前端控制器对浏览器发送的请求进行了统一的处理但是具体的请求有不同的处理过程因此需要创建处理具体请求的类即请求控制器 请求控制器中每一个处理请求的方法成为控制器方法 因为SpringMVC的控制器由一个POJO(普通的Java类)担任因此需要通过Controller注解将其标识 为一个控制层组件交给Spring的IoC容器管理此时SpringMVC才能够识别控制器的存在 Controller public class HelloController { }创建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/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi: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 http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd!– 扫描控制层组件–context:component-scan base-packagecom.bijing.controller/context:component-scan!– 配置Thymeleaf视图解析器 –bean idviewResolver classorg.thymeleaf.spring5.view.ThymeleafViewResolverproperty nameorder value1/property namecharacterEncoding valueUTF-8/property nametemplateEnginebean classorg.thymeleaf.spring5.SpringTemplateEngineproperty nametemplateResolver!– 物理视图(当前要访问页面的完整路径) 视图前缀逻辑视图视图后缀–!– 如/WEB-INF/templates/index.html 前置/WEB-INF/templates/ 逻辑视图index 后缀.html–bean classorg.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver!– 视图前缀 –property nameprefix value/WEB-INF/templates//!– 视图后缀 –property namesuffix value.html/property nametemplateMode valueHTML5/property namecharacterEncoding valueUTF-8 //bean/property/bean/property/bean!– 处理静态资源例如html、js、css、jpg若只设置该标签则只能访问静态资源其他请求则无法访问此时必须设置mvc:annotation-driven/解决问题 –mvc:default-servlet-handler/!– 开启mvc注解驱动 – mvc:annotation-drivenmvc:message-converters!– 处理响应中文内容乱码 –beanclassorg.springframework.http.converter.StringHttpMessageConverterproperty namedefaultCharset valueUTF-8 /property namesupportedMediaTypeslistvaluetext/html/valuevalueapplication/json/value/list/property/bean/mvc:message-converters /mvc:annotation-driven /beans测试HelloWorld 实现对首页的访问 在请求控制器中创建处理请求的方法 Controller public class HelloController { //RequestMapping 处理请求和控制器方法之间的映射关系,把浏览器发送的请求用被它标记的方法处理 // RequestMapping注解的value属性可以通过请求地址匹配请求/表示的当前工程的上下文路径 // localhost:8080/springMVC/
RequestMapping(/)public String portal(){//return index 将逻辑视图返回,然后被视图解析器解析,给它加上前缀和后缀,形成物理视图最终路径WEB_INF/templates/index.htmlreturn index;}} 通过超链接跳转到指定页面 !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8title首页/title /head body h1index.html/h1 !–会自动加上上下文路径– a th:href{/hello}测试SpringMVC/a !–这种没有上下文路径– a href/hello测试绝对路径/a /body /html在请求控制器中创建处理请求的方法 // 被解析成localhost:8080/SpringMVC/hello,使用上下文路径/helloRequestMapping(/hello)public String hello(){return success;}总结 浏览器发送请求若请求地址符合前端控制器的url-pattern该请求就会被前端控制器DispatcherServlet处理。前端控制器会读取SpringMVC的核心配置文件通过扫描组件找到控制器 将请求地址和控制器中RequestMapping注解的value属性值进行匹配若匹配成功该注解所标识的控制器方法就是处理请求的方法。 处理请求的方法需要返回一个字符串类型的视图名称该视图名称会被视图解析器解析加上前缀和后缀组成视图的路径通过Thymeleaf对视图进行渲染最终转发到视图所对应页面 拓展 init-param标签和load-on-startup的使用 web.xml servletservlet-nameSpringMVC/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class !– 设置servlet初始化参数,contextConfigLocation设置DispatcherServlet要加载的SpringMVC的路径,即设置SpringMVC配置文件的位置和名称–init-paramparam-namecontextConfigLocation/param-name !– 此时WEB_INF中的SpringMVC-servlet.xml可以删掉了–param-valueclasspath:springmvc.xml/param-value/init-param !– 将servlet初始化时间提前到服务器启动时,因为不设置的话第一次访问servlet时不但要处理请求,还有一个漫长的初始化过程–load-on-startup1/load-on-startup/servlet