前端控制器

Posted soldierback

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端控制器相关的知识,希望对你有一定的参考价值。

一、web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>springwebmvc</display-name>
    
    <!-- springmvc前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 
            contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等) 如果不
            配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-serlvet.xml(springmvc-servlet.xml) 
        -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
                 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析;  
                 第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不
                          让DispatcherServlet进行解析 使用此种方式可以实现 RESTful风格的url;
                 第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时, 
                仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错
        -->
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    
    
    <!-- <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list> -->
</web-app>

二、springmvc.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
    
    <!-- 配置第一种Handler,ItemsController1需要实现Controller接口-->
    <!-- <bean id="itemsController1" name="/queryItems.action" class="com.chuanye.ssm.controller.ItemsController1" /> -->
    <!-- 配置第二种Handler,ItemsController2需要实现HttpRequestHandler接口 -->
    <!-- <bean id="itemsController2" class="com.chuanye.ssm.controller.ItemsController2" /> -->
    
    <!-- 对于注解的Handler可以单个配置; 实际开发中建议使用组件扫描-->
    <bean class="com.chuanye.ssm.controller.ItemsController3" />
    <!-- 可以扫描controller、service等; 这里让扫描controller,指定controller的包 -->
    <!-- <context:component-scan base-package="com.chuanye.ssm.controller" /> -->
    
    <!-- 《非注解映射器1》 -->
    <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />    -->
    <!-- 《非注解映射器2》 -->
    <!-- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                对itemsController1进行url映射,url是/queryItems1.action
                <prop key="/queryItems1.action">itemsController1</prop>
                <prop key="/queryItems2.action">itemsController1</prop>
                <prop key="/queryItems3.action">itemsController2</prop>
            </props>
        </property>
    </bean> -->
    
    
    <!-- 《注解映射器》 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <!-- 《注解适配器》 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    <!-- 
        使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
        mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换
        解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的
        RequestMappingHandlerMapping和RequestMappingHandlerAdapter
        实际开发时使用mvc:annotation-driven
     -->
    <mvc:annotation-driven></mvc:annotation-driven>
    
    <!-- 《非注解适配器1》 -->
    <!-- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> -->
    <!-- 《非注解适配器2》 -->
    <!-- <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/> -->
    
    <!-- 《视图解析器》 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <!-- 配置jsp路径的前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 配置jsp路径的后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>
    
</beans>

 

以上是关于前端控制器的主要内容,如果未能解决你的问题,请参考以下文章

前端防扒代码片段

前端防扒代码片段

前端防扒代码片段

前端防扒代码片段

前端防扒代码片段

前端开发工具vscode如何快速生成代码片段