javaWeb&springMVC

发布时间 2023-11-06 17:40:13作者: 小白*-*

Servlet

1:servlet定义

servlet是开发动态web的一门技术,通过servlet实现与用户的动态交互。

2:使用方式

(1)javaWeb中只需要继承HttpServlet接口,重写其中的doGet和doPost方法即可编写一个servlet;写好servlet程序后需要在web.xml文件中编写映射,相当于将我们缩写的servlet注册到web服务器中,这样当用户来访问时就能从web服务器中访问到对应的servlet;servlet映射需要先编写一个servlet,注册当前servlet对应我们所编写的哪个类,还需要编写一个servlet-mapping来匹配我们所注册的这个servlet的请求路径(请求路径可匹配多个,也可指定通用请求路径---明确指定的固有映射路径优先级高于通用请求路径)

<servlet>
    <servlet-name>自定义servlet的名字</servlet-name>
    <servlet-class>对应servlet的类路径</servlet-class>
</servlet>
<!--  一个servlet对应一个Mapping:映射-->
<servlet-mapping>
    <servlet-name>自定义servlet的名字</servlet-name>
    <!--    请求路径-->
    <url-pattern>/自定义请求路径</url-pattern>
</servlet-mapping>

(2)在javaWeb中,每编写一个servlet都需要去web.xml中进行注册,到springMVC阶段,DispatcherServlet简化了一一注册的操作。该阶段只需要在web.xml中注册一个通配的DispatcherServlet,并为其绑定一个spingMVC配置文件,将mapping路径设置为通配路径,之后每次有请求到web服务器都会经过DispatcherServlet。

此时,对于请求具体映射到哪个类进行处理的操作就转移到了DispatcherServlet绑定的spingMVC配置文件中。在配置文件中需要配置三个基础bean,如下所示,分别是,处理器映射器、处理器适配器、视图解析器。这三个bean完成了用户请求过来以后的请求路径匹配、映射、以及对后台返回数据进行解析。

大致流程是,处理器映射器首先需要先寻找是否有对应能处理用户请求的servlet,大家此时可能会好奇,那它怎么寻找呢?我们到目前位置并没有在任何位置声明每个servlet对应的请求路径!其实很简单,springMVC确实简化了一次又一次的servlet注册和mapping流程,但在配置文件中,需要以bean的形式配置每个controller类对应的请求路径,bean中只需指定id=“对应的请求路径”,class=“对应请求路径的controller类的路径”。对javaWeb熟悉的读者可能发现,之前javaWeb中每次匹配的都是一个继承了HttpServlet的servlet处理类,但此时确直接匹配的是controller类。没错!这就是javaWeb干的事情之一:将url直接映射到java类,而不需要继承HttpServlet类,在其中对请求进行处理。

当处理器映射器找到有处理该请求的java类时,通知DispatcherServlet,然后DispatcherServlet调用处理器适配器去处理调用对应的controller类去请求;

请求处理完成后会返回一个ModelAndView对象,该对象将请求处理后的数据进行了封装。此时又会发现,怎么多了一个之前没见过的请求返回模型???这就是JavaMVC干的第二件事!封装数据,将处理数据和操作页面进行了封装!既然多了一个封装对象,那返回后,要反馈给用户自然需要先对对象进行解析,再把结果展示给用户,此时该任务就交个了视图解析器负责。

以上就是springMVC阶段大致的请求处理流程,作者也是初学,记录一下~

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

<!--视图解析器:DispatcherServlet给他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
    <!--前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--后缀-->
    <property name="suffix" value=".jsp"/>
</bean>