SpringMVC實戰(三種控制器方式)

來源:互聯網
上載者:User

標籤:建立   throws   extends   end   收集   work   border   prot   property   

 

 1.前言

上篇部落格著重說了一下SpringMVC中幾種處理映射的方式,這篇部落格來說一下SpringMVC中幾種經常使用的控制器.


 2.經常使用控制器

2.1 ParameterizableViewController(參數控制器)

<span style="font-size:18px;"><?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: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.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "><!-- 設定檔形式要配置的組建:Controller,handlermapping(有預設規則),viewResolver,interceptor --><!-- 視圖解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置從項目根資料夾到一端路徑 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 檔案尾碼名稱 --><property name="suffix" value=".jsp" /></bean><!-- 使用簡單url來映射 --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/hello1.do">TestController</prop><prop key="/hello1.do">toLogin</prop><prop key="/comm.do">command</prop><prop key="/form.do">form</prop></props></property></bean><!-- 參數控制器,須要配置對應的URL來映射 --><bean id="toLogin"class="org.springframework.web.servlet.mvc.ParameterizableViewController"><!-- 配置你所要跳轉到視圖的名稱 --><!-- 要跳轉的視圖的名稱 --><property name="viewName" value="index"></property></bean></beans></span>




從上述代碼中我們能夠發現,參數控制器跟尋常的控制器差點兒相同,可是不能通過控制器名稱來訪問到,由於參數控制器是唯一的.


2.2 AbstractCommandController(命令控制器)

<span style="font-size:18px;"><?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: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.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "><!-- 設定檔形式要配置的組建:Controller,handlermapping(有預設規則),viewResolver,interceptor --><!-- 視圖解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置從項目根資料夾到一端路徑 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 檔案尾碼名稱 --><property name="suffix" value=".jsp" /></bean><!-- 使用簡單url來映射 --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/hello1.do">TestController</prop><prop key="/hello1.do">toLogin</prop><prop key="/comm.do">command</prop><prop key="/form.do">form</prop></props></property></bean><!-- 命令控制器資訊,須要指定簡單的URL來映射 --><bean class="com.url.controller.commController" id="command"><!-- 指定收集對象的類型 --><property name="commandClass" value="com.url.Entity.person"></property></bean></beans></span>

接著來建立控制器資訊,須要繼承AbstractCommandController

<span style="font-size:18px;">package com.url.controller;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.validation.BindException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractCommandController;import com.url.Entity.person;public class commController extends AbstractCommandController {//通過命令控制器,每次在訪問的時候,都會建立一個新的Person對象@Overrideprotected ModelAndView handle(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, BindException arg3)throws Exception { //使用命令控制器來收集資料而且建立指定的對象person person=new person();System.out.println(person);//把背景資料和視圖封裝成ModelAndViewMap<String, Object> map=new HashMap<String, Object>();map.put("person", person);return new ModelAndView("index", map);}}</span>

3.3 FormController(表單控制器)

通過表單控制器,能夠把表單上的資料封裝成為一個對象,在控制器中收集到.

<span style="font-size:18px;"><?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: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.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "><!-- 設定檔形式要配置的組建:Controller,handlermapping(有預設規則),viewResolver,interceptor --><!-- 視圖解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 配置從項目根資料夾到一端路徑 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 檔案尾碼名稱 --><property name="suffix" value=".jsp" /></bean><!-- 使用簡單url來映射 --><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/hello1.do">TestController</prop><prop key="/hello1.do">toLogin</prop><prop key="/comm.do">command</prop><prop key="/form.do">form</prop></props></property></bean><!-- 表單控制器,須要指定對應的URL來映射 --><bean class="com.url.controller.FormController" id="form"><!-- 指定收集對象的類型 --><property name="commandClass" value="com.url.Entity.person"></property><!-- 表單頁面 --><property name="formView" value="form"></property><!-- 成功後的跳轉頁面操作 --><property name="successView" value="success"></property></bean></beans></span>


接著建立控制器


<span style="font-size:18px;">package com.url.controller;import org.springframework.web.servlet.mvc.SimpleFormController;import com.url.Entity.person;/*表單控制器*/public class FormController extends SimpleFormController {/*通過此方法來收集表單上的資料,並自己主動封裝成一個對象*/protected void doSubmitAction(Object command) throws Exception {person p=(person)command;System.out.println(p);super.doSubmitAction(command);}}</span>


 3.小結

本篇部落格解說了一下SpringMVC中經常使用的控制器,通過控制器能夠與View進行對應的傳值操作.



SpringMVC實戰(三種控制器方式)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.