1. 程式人生 > >Spring框架學習第四天

Spring框架學習第四天

Spring Web MVC

Spring框架功能,基於IOC容器,用於按照MVC結構去開發Web程式

Spring Web MVC結構

設計請求 - 相應的處理流程

/list.do->DispatcherServlet->ListController->ViewResolver->/list,jsp

/add.do->DispatcherServlet->HandlerMapping->AddController->ViewResolver->/success.jsp

/hello.do->DispatcherServlet->HandlerMapping

->He1loController->ViewResolver->/hel1o.jsp

流程的實現

編寫流程中需要的元件,然後追加元件配置。

  • hello.jsp
  • HelloController

HelloController程式碼實現

package biuaxia.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class HelloController implements Controller { /** * ModelAndView封裝了檢視名字和傳出的資料 */ @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // 呼叫模型元件處理 ModelAndView view = new
ModelAndView(); view.setViewName("hello");// 找到hello檢視 view.getModel().put("data", "傻屌隊友");// 放入資料,可以傳遞到jsp return view; } }

實現Controller介面(需要匯入spring-webmvc.jar包),完成handleRequest方法,返回一個ModelAndView物件,設定檢視名和傳出資料

流程的配置

  • DispatcherServlet的配置(web.xml)
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-mvc.xml</param-value>
	</init-param>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>
  • HandlerMapping的配置(spring-mvc.xml)
<!-- HandlerMapping -->
<!-- 維護請求,負責找到各種方法 -->
<bean id="handler"
	class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
	<property name="mappings">
		<props>
			<!-- <prop key="請求地址">請求的Controller物件id</prop> -->
			<prop key="/hello.do">helloController</prop>
		</props>
	</property>
</bean>
  • Controller的配置
<!-- Controller,id名約定和handlerMapping對應 -->
<bean id="helloController" class="biuaxia.controller.HelloController"></bean>
  • viewResolver配置
<!-- ViewResolver,id名沒有約定 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<!-- 指定位置,比如我的檔案在/web-inf資料夾下,那麼這裡就應該是value="/WEB-INF/" -->
	<property name="prefix" value="/"></property>
	<!-- 指定檢視型別,這裡就是匹配檔案的字尾名,比如檢視返回的是hello,那麼這裡value如果是.jsp就會讓使用者訪問到hello.jsp -->
	<property name="suffix" value=".jsp"></property>
</bean>