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

企业搭建pc端网站武汉做网络推广的公司

企业搭建pc端网站,武汉做网络推广的公司,济南百度竞价代运营,能免费创建网站吗一、MVC 模式简介 在软件开发的广袤天地中,MVC 模式宛如一座明亮的灯塔,指引着开发者构建高效、可维护的应用程序。Spring MVC 作为基于 Spring 框架的重要 web 开发模块,更是将 MVC 模式的优势发挥得淋漓尽致,堪称 Servlet 的强…

一、MVC 模式简介

在软件开发的广袤天地中,MVC 模式宛如一座明亮的灯塔,指引着开发者构建高效、可维护的应用程序。Spring MVC 作为基于 Spring 框架的重要 web 开发模块,更是将 MVC 模式的优势发挥得淋漓尽致,堪称 Servlet 的强力升级版。

1.1 MVC 各组件职责

  • Model(模型层):这一层如同应用的数据大脑,包含了工程中的 Java Bean。Java Bean 又细分为两类:实体类 Bean,就像一个个数据保险箱,专门用于存储业务数据,比如在一个电商系统中,商品信息、用户信息等实体类就肩负着存储这些关键数据的重任;业务处理 Bean,它可以是 Servlet 或者 Dao 对象,主要负责处理业务逻辑以及与数据持久化相关的操作,例如在处理用户注册业务时,相关的 Servlet 或 Dao 对象会对用户输入的数据进行验证、存储等操作。
  • View(视图层):视图层是应用与用户直接对话的窗口,项目中的 html 或 jsp 等页面便是其主要载体。它的核心作用在于与用户进行交互,将数据以直观、友好的方式展示给用户,同时收集用户的输入信息。比如在一个新闻网站中,用户看到的新闻列表页面、新闻详情页面等都是视图层的体现,用户可以在这些页面上浏览新闻内容、进行评论等操作。
  • Controller(控制层):控制层在整个 MVC 架构中扮演着交通枢纽的角色,在 Spring MVC 框架里由 Controller 担当此重任,其前身是 Servlet。它的主要职责是接收来自用户的请求,对请求进行分析和处理,然后根据业务逻辑调用相应的模型层组件进行数据处理,最后将处理结果返回给视图层进行展示。例如在一个在线购物系统中,当用户点击 “添加商品到购物车” 按钮时,对应的 Controller 会接收到这个请求,调用相关的业务逻辑方法处理添加商品的操作,最后返回给用户一个操作结果页面。

MVC 思想并非特定编程语言或者 web 应用所独有的,它是一种广泛适用的规范。通过将一个应用清晰地划分为 Model、View 和 Controller 三个基本部分,这三个部分以最小的耦合协同工作,极大地提高了应用的可扩展性和可维护性。就像一辆汽车,发动机(Model)负责提供动力,仪表盘(View)负责展示信息,方向盘和变速箱(Controller)负责控制方向和速度,它们各司其职又协同配合,共同保证汽车的正常运行。

二、SpringMVC 入门案例搭建

2.1 创建 WEB 工程与引入依赖

搭建 SpringMVC 项目的第一步,是创建一个 WEB 工程。就像搭建一座房子,首先要打好地基。创建好工程后,我们需要引入开发所需的 jar 包,这些 jar 包就如同建房所需的各种建筑材料。通过在项目的pom.xml文件中进行如下配置来引入依赖:

xml

<properties><spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><!--SpringMVC核心依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!--servlet API依赖,用于与Servlet容器交互,provided范围表示由容器提供,打包时不会包含--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><!--日志依赖,用于记录应用运行时的日志信息,方便调试和监控--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring4</artifactId><version>3.0.9.RELEASE</version></dependency>
</dependencies>

2.2 配置 web.xml

接下来,我们需要对web.xml配置文档进行更改。web.xml就像是一个交通指挥中心,负责配置整个 web 应用的一些关键信息。首先,我们要确保web - app标签的配置正确,指定合适的版本和相关命名空间:

xml

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>

2.3 配置核心控制器 DispatcherServlet

Spring MVC 的核心是基于原生 servlet 的强大前端控制器 DispatcherServlet,它就像一个智能的交通警察,对所有的请求和响应进行统一处理。在web.xml中配置 DispatcherServlet 的过程如下:

xml

<!--在web.xml中配置Spring提供的过滤器类,用于设置字符编码,确保请求和响应的字符编码一致,避免乱码问题-->
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param>
</filter>
<filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
<!--不拦截所有是html的页面请求,让服务器默认的Servlet来处理html请求,提高性能和兼容性-->
<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.html</url-pattern>
</servlet-mapping>
<!--配置前端控制器DispatcherServlet,对浏览器发送的请求进行统一处理-->
<servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加载springmvc.xml配置文件的位置和名称,配置的是Spring配置,contextConfigLocation是固定的参数名,classpath表示类路径,即Java和resources文件夹所在路径,springmvc.xml是配置文件的名称,需要确保该文件存在于指定路径下--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--配置启动加载,load-on-startup的值为1表示在服务器启动时就加载该Servlet,值越小优先级越高,这样可以确保在应用启动时就完成相关的初始化工作,提高应用的响应速度--><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern>   
</servlet-mapping>
<!--开启项目时打开的页面,设置欢迎文件列表,当用户访问根路径时,服务器会优先查找并返回该文件,这里设置为index.html,方便用户快速进入应用的起始页面-->
<welcome-file-list><welcome-file>/index.html</welcome-file>
</welcome-file-list>

2.4 编写相关页面

我们需要编写index.htmlsuc.html页面。index.html就像是应用的大门,用户从这里进入应用,它提供了一个简单的界面,包含一个指向/SpringMVCDemo/hello.do的超链接:

html

<html>
<head><meta charset="utf-8"><title>入门程序</title>
</head>
<body><h3>入门</h3><a href="/SpringMVCDemo/hello.do">入门程序</a>
</body>
</html>

suc.html则是用于展示处理结果的页面,它使用了 Thymeleaf 模板引擎来动态渲染数据:

html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>成功</title>
</head>
<body><h1>Hello <b th:text="${msg}"></b></h1>
</body>
<script>
</script>
</html>

2.5 编写 Controller 类和方法

创建一个HelloController类,使用@Controller注解将其交给 IOC 容器进行管理,就像把一把钥匙交给管理员,让管理员来管理这个类的生命周期和依赖注入等操作。在这个类中,编写一个处理请求的方法sayHello,使用@RequestMapping注解来映射请求路径:

java

//把当前类交给IOC容器进行管理
@Controller
public class HelloController {/*** 处理超链接发送出来的请求* @param model 用于向视图传递数据的模型对象* @return 返回视图名称*/@RequestMapping(path = "/hello.do")public String sayHello(Model model){System.out.println("入门方法执行了2...");// 向模型中添加属性msg与值,可以在html页面中取出并渲染model.addAttribute("msg","hello,SpringMVC");// 配置了视图解析器后,直接返回视图名称suc,视图解析器会根据配置找到对应的实际页面return "suc";}
}

2.6 编写 springmvc.xml 配置文件

springmvc.xml是 Spring MVC 的重要配置文件,它就像一个指挥家,协调着各个组件的工作。在这个文件中,我们进行了如下配置:

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"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/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--配置spring创建容器时要扫描的包,指定为com.qcby包及其子包,这样Spring容器会自动扫描该包下的所有组件,例如带有@Controller、@Service等注解的类,将其注册到容器中进行管理--><context:component-scan base-package="com.qcby"></context:component-scan><!--处理映射器,BeanNameUrlHandlerMapping会根据处理器的Bean名称来映射请求,例如如果一个Controller的Bean名称是helloController,那么它可以处理以/helloController为路径的请求,这里使用默认配置即可满足简单的请求映射需求--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!--处理器适配器,SimpleControllerHandlerAdapter用于适配实现了Controller接口的处理器,它负责调用处理器的handleRequest方法来处理请求,在Spring MVC中,不同类型的处理器需要不同的适配器来进行适配和调用,这里使用的是简单控制器适配器,适用于简单的Controller实现场景--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!--配置视图解析器,ThymeleafViewResolver用于解析Thymeleaf模板视图,order属性设置视图解析器的优先级,值越小优先级越高;characterEncoding属性设置字符编码为UTF-8,确保视图渲染时的字符编码正确;templateEngine属性引用了一个名为templateEngine的Bean,用于进行模板引擎相关的配置和操作,这里使用Thymeleaf模板引擎来渲染视图,Thymeleaf具有强大的模板语法和功能,方便进行页面的动态渲染和数据展示等操作--><bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver"><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine" ref="templateEngine"/></bean><!-- templateEngine配置,SpringTemplateEngine是Thymeleaf的Spring集成模板引擎,templateResolver属性引用了一个名为templateResolver的Bean,用于配置模板解析器,模板解析器负责根据配置的前缀、后缀等信息来查找和加载模板文件,例如这里配置的SpringResourceTemplateResolver会从/html/目录下查找以.html为后缀的模板文件,然后使用Thymeleaf的模板语法进行渲染和处理,最终生成可展示的视图页面--><bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"><property name="templateResolver" ref="templateResolver"/></bean><bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"><property name="prefix" value="/html/" /><property name="suffix" value=".html" /><property name="templateMode" value="HTML5"/></bean><!-- JSON View配置,MappingJackson2JsonView用于将模型数据转换为JSON格式并返回给客户端,在一些需要返回JSON数据的场景,例如进行前后端分离开发时,前端通过AJAX请求获取数据,后端可以使用这个视图来将数据以JSON格式返回,方便前端进行数据处理和展示等操作,这里只是配置了这个视图组件,在实际使用时,需要在Controller方法中进行相应的设置来返回JSON数据,例如可以使用@ResponseBody注解结合这个视图来实现JSON数据的返回功能--><bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"></bean><!-- 配置spring开启注解mvc的支持 ,默认就是开启的 ,要想让其他组件(不包含映射器、适配器、处理器)生效就必须需要配置了,例如一些自定义的拦截器、消息转换器等组件,如果不开启注解mvc支持,这些组件可能无法正常工作,开启后,Spring MVC会自动扫描和注册相关的注解驱动组件,使得应用能够支持更多的功能和特性,提高开发效率和应用的灵活性等。例如可以使用@PathVariable、@RequestParam等注解来方便地处理请求参数等操作,这些注解的生效就依赖于开启注解mvc支持。--><mvc:annotation-driven></mvc:annotation-driven>
</beans>

完成上述所有配置后,启动 Tomcat 服务器进行测试。如果一切配置正确,当用户访问index.html页面并点击 “入门程序” 超链接时,会触发HelloController中的sayHello方法,最终跳转到suc.html页面并展示 “hello,SpringMVC” 的信息。

三、SpringMVC 原理剖析

3.1 SpringMVC 中心控制器 DispatcherServlet

Spring 的 web 框架就像是一个精心设计的交响乐团队,而 DispatcherServlet 则是这个团队中的指挥家。它的核心作用是将请求精准地发送到不同的处理器,确保整个应用的流程顺畅运行。在启动 Tomcat 服务器时,由于配置了load - on - startup标签,DispatcherServlet 对象会被创建,同时它会加载springmvc.xml配置文件,就像指挥家在演出前会仔细研究乐谱一样,DispatcherServlet 通过加载配置文件来了解整个应用的架构和流程。

3.2 入门案例的执行流程

3.3 SpringMVC 官方提供图形入门案例中的组件分析

  1. 启动服务器与初始化:当 Tomcat 服务器启动时,因为load - on - startup配置为 1,DispatcherServlet 对象被创建,并且它会根据contextConfigLocation参数的值加载springmvc.xml配置文件。在这个过程中,Spring 容器被初始化,各种组件被创建并注册到容器中,就像搭建一个舞台,准备好各种道具和演员。
  2. 创建 Controller 对象:由于开启了注解扫描,@Controller注解标记的HelloController对象会被 Spring 容器创建,就像导演挑选演员并让他们做好演出准备。
  3. 请求到达与处理:当用户从index.jsp(这里假设index.html重定向到了index.jsp,实际情况中也可以直接从index.html发起请求)发送请求时

    请求会如同传递接力棒一般,率先抵达 DispatcherServlet 这个核心控制器。DispatcherServlet 会仔细审视请求的路径,依据配置在HelloController类中sayHello方法上的@RequestMapping注解,精准地找到需要执行的具体方法。这就好比在一个大型图书馆中,根据索引目录快速定位到所需的书籍。

  4. 视图解析与页面查找sayHello方法执行完毕后会返回一个视图名称(在这里是suc)。此时,视图解析器开始发挥关键作用,它会依据在springmvc.xml中配置的规则去寻找对应的实际页面。以本案例的配置来说,视图解析器ThymeleafViewResolver会在/html/目录下查找名为suc.html的文件。这类似于按照地图的指引,在城市的特定区域找到目标建筑。

  5. 页面渲染与响应:Tomcat 服务器找到suc.html页面后,会根据 Thymeleaf 模板引擎的规则对其进行渲染。在渲染过程中,sayHello方法通过model.addAttribute("msg","hello,SpringMVC")设置的msg属性值会被动态地填充到页面中对应的位置。最终,渲染好的页面作为响应返回给用户,用户在浏览器中就能看到展示了 “hello,SpringMVC” 信息的页面,完成一次完整的请求处理流程,就像一场精彩的演出完美落幕,观众欣赏到了最终的成果。

  6. 前端控制器(DispatcherServlet):作为整个 SpringMVC 架构的入口和核心调度者,DispatcherServlet 负责接收所有来自客户端的请求,并将这些请求分发给后续的组件进行处理。它就像一个大型商场的总服务台,所有顾客的咨询和需求都首先汇聚到这里,然后由总服务台的工作人员将需求分配到相应的部门去解决。
  7. 处理器映射器(HandlerMapping):处理器映射器的任务是根据请求的信息(例如请求的 URL),找到对应的处理器(Handler)。在我们的案例中,使用的BeanNameUrlHandlerMapping会根据处理器的 Bean 名称来映射请求。可以将其想象成一个智能的导航系统,根据输入的目的地信息,规划出到达目的地的路线,这里的目的地就是请求要访问的处理器。
  8. 处理器(Handler):处理器是真正处理请求业务逻辑的组件,在我们的案例中就是HelloController中的sayHello方法。它负责接收请求参数,调用相关的业务逻辑方法进行处理,然后返回处理结果。好比工厂中的工人,根据订单要求进行生产加工,最终产出产品。
  9. 处理器适配器(HandlerAdapter):由于不同类型的处理器可能有不同的接口和调用方式,处理器适配器的作用就是将 DispatcherServlet 传递过来的请求适配到具体的处理器上进行调用。在案例中使用的SimpleControllerHandlerAdapter用于适配实现了Controller接口的处理器。它类似于一个万能插头转换器,将不同规格的插头(请求)转换为能插入特定插座(处理器)的形式,确保请求能够正确地被处理器处理。
  10. 视图解析器(ViewResolver):视图解析器的职责是根据处理器返回的视图名称,找到对应的实际视图资源(如 JSP 页面、Thymeleaf 模板等),并将其解析为可以返回给客户端的视图对象。在本案例中,ThymeleafViewResolver根据配置的前缀/html/和后缀.html,以及视图名称suc,找到suc.html页面并进行解析。它就像一个翻译官,将抽象的视图名称翻译为具体的、可展示的页面资源。
  11. 视图(View):视图是最终呈现给用户的界面,它负责将模型中的数据展示出来。在我们的案例中,suc.html就是视图,通过 Thymeleaf 模板语法将model中的msg数据展示在页面上。视图就像是一幅精美的画作,将各种元素(数据)组合在一起,呈现给观众(用户)欣赏。
http://www.dtcms.com/wzjs/22211.html

相关文章:

  • 描述建设一个网站的基本步骤百度关键词屏蔽
  • 云主机 网站吗百度直接打开
  • 网站qq微信分享怎么做的长沙百度seo代理
  • 电商设计招聘seo入门版
  • 新沂网站设计免费的精准引流软件
  • 好的网站制作国外网站推广平台有哪些?
  • 微信公众号登录平台登录官网绍兴百度seo排名
  • 如何搭建自己的网站平台近期重大新闻
  • 网站开发主要框架 后端上海百度公司地址
  • 广州一起做网站搜索引擎优化人员优化
  • 典型b2c模式的网站今天的国内新闻
  • 在线做动图的网站完整的社群营销方案
  • 有没有专门做家纺的网站搜狗指数官网
  • 泾县住房和城乡建设委员会官方网站seo企业站收录
  • CMS网站建设优势重庆关键词排名推广
  • 宁波建设网站制作合肥seo建站
  • 自己服务器建网站 备案广州最新疫情情况
  • 深圳网络搭建深圳网站快速排名优化
  • 微小店网络seo培训
  • 可以做动画的网站都有哪些软件友情链接可以随便找链接加吗
  • 书店网站建设技术风险开源crm系统
  • 没企业可以做网站吗什么是seo优化?
  • 淘宝做链接有哪些网站可以做seo关键词优化培训
  • 网站模板定制网络优化基础知识
  • ie6 网站模板百度网页入口官网
  • 做水产的都用什么网站市场调研的内容
  • 直播一级a做爰片免费网站站长工具国色天香
  • 做气体检测仪的网站软文推广是什么意思?
  • 在淘宝做网站可以改域名吗推广互联网营销
  • wordpress短链接清除梁水才seo优化专家