后端控制器(Controller)

Exisi 2022-06-28 14:12:53
Categories: Tags:

Controller

说明

UrlFilenameViewController

用于跳转界面,控制器根据请求的URL直接解析出视图名,省去了自己实现 Ccntroller 跳转页面

ParameterizableViewController

同样用于界面跳转,控制器根据配置的参数来跳转界面,也省去了自己实现 Ccntroller 跳转页面

ServletForwardingController

将请求转发到 Servlet

ServletWrappingController

将某个 Servlet 包装为 Controller,所有到 ServletWrappingController 的请求实际上是由它内部所包装的这个 Servlet 实例来处理的,这样可以将这个 Servlet 隐藏起来

MultiActionController

一个 Controller 可以写多个方法,分别对应不同的请求,使同一业务的方法可以放在一起了。在使用时让自己的 Controller 类继承 MultiActionController

 

 

 

UrlFilenameViewController

示例

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="mappings">

        <props>

            <!-- /index 路径的请求交给 id 为 urlFilenameViewController 的控制器处理-->

            <prop key="/index">urlFilenameViewController</prop>

        </props>

    </property>

</bean>

 

<!-- urlFilenameViewController -->

<bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

 

 

 

ParameterizableViewController

示例

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="mappings">

        <props>

            <!-- /index 路径的请求交给 id 为 parameterizableViewController 的控制器处理-->

            <prop key="/index">parameterizableViewController</prop>

        </props>

    </property>

</bean>

 

<!-- parameterizableViewController,指定跳转的视图路径 -->

<bean id="parameterizableViewController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">

  <property name="viewName" value="/index.jsp" />

</bean>

 

 

 

ServletForwardingController / ServletWrappingController

示例

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="mappings">

        <props>

            <!-- /index 路径的请求交给 id 为 parameterizableViewController 的控制器处理-->

            <prop key="/index">parameterizableViewController</prop>

        </props>

    </property>

</bean>

 

      <!-- servletForwardingController,转发到特定的Servlet -->

<bean id="servletForwardingController" class="org.springframework.web.servlet.mvc.ServletForwardingController">

  <property name="servletName" value="indexServlet" />

</bean>

 

<!-- 指定转发的Servlet -->

<servlet>

  <servlet-name>indexServlet</servlet-name>

  <servlet-class>com.servlet.ServletForwarding</servlet-class>

</servlet>

 

 

 

MultiActionController

示例

public class MyController extends MultiActionController{

    public ModelAndView add(HttpServletRequest request, HttpServletResponse response) {

        ModelAndView mv = new ModelAndView();

        mv.addObject("message""add");

        mv.setViewName("add");

        return mv;

    }

    

    public ModelAndView delete(HttpServletRequest request, HttpServletResponse response) {

        ModelAndView mv = new ModelAndView();

        mv.addObject("message""delete");

        mv.setViewName("delete");

        return mv;

    }

}

 

<bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="mappings">

        <props>

            <!-- /index 路径的请求交给 id 为继承MutiActionController的 myController 的控制器处理-->

            <prop key="/index">myController</prop>

        </props>

    </property>

</bean>

 

<bean id="myController" class="com.controller.MyController">

  <property name="methodNameResolver">

    <!-- InternalPathMethodNameResolver 根据请求路径解析执行方法名

             ParameterMethodNameResolver 根据参数解析执行方法名

             PropertiesMethodNameResolver 根据 key/value 列表解析执行方法名 -->

    <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">

      <!-- 指定参数名为action -->

      <property name="paramName" value="action" />

    </bean>

  </property>

 

 <!-- 不指定参数-->

<property name="methodNameResolver">

  <bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />

</property>

 

</bean>