Spring框架學習第四天
阿新 • • 發佈:2018-12-21
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
流程的實現
編寫流程中需要的元件,然後追加元件配置。
- 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>