SpringMVC入門之普通配置篇

openkk 12年前發布 | 119K 次閱讀 SpringMVC Spring MVC Web框架

直接上例子吧,這是一個WebProject

 

首先是Web.xml

    <?xml version="1.0" encoding="UTF-8"?>  
    <web-app version="2.5"  
        xmlns="http://java.sun.com/xml/ns/javaee"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
        <!-- 使用ContextLoaderListener配置時,需要告訴它Spring配置文件的位置 -->  
        <!-- 如果沒有指定,上下文載入器會在/WEB-INF/applicationContext.xml中找Spring配置文件 -->  
        <!-- 我們可以通過在Servlet上下文中設置contextConfigLocation參數,來為上下文載入器指定一個或多個Spring配置文件 -->  
        <!-- 注意:contextConfigLocation參數是一個用逗號分隔的路徑列表,其路徑是相對于Web系統的根路徑的 -->  
        <context-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>/WEB-INF/springmvc-servlet.xml, classpath:applicationContext-*.xml</param-value>  
        </context-param>  

        <!-- SpringMVC的前端控制器 -->  
        <!-- 當DispatcherServlet載入后,它將從一個XML文件中載入Spring的應用上下文,該XML文件的名字取決于<servlet-name> -->  
        <!-- 這里DispatcherServlet將試圖從一個叫做springmvc-servlet.xml的文件中載入應用上下文,其默認位于WEB-INF目錄下 -->  
        <!-- 所以ContextLoaderListener參數值也可寫成<param-value>classpath:applicationContext-*.xml</param-value> -->  
        <servlet>  
            <servlet-name>springmvc</servlet-name>  
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
            <load-on-startup>1</load-on-startup>  
        </servlet>  
        <servlet-mapping>  
            <servlet-name>springmvc</servlet-name>  
            <url-pattern>*.htm</url-pattern>  
        </servlet-mapping>  

        <!-- 配置上下文載入器 -->  
        <!-- 上下文載入器載入除DispatcherServlet載入的配置文件之外的其它上下文配置文件 -->  
        <!-- 最常用的上下文載入器是一個Servlet監聽器,其名稱為ContextLoaderListener -->  
        <listener>  
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
        </listener>  

        <welcome-file-list>  
            <welcome-file>index.jsp</welcome-file>  
        </welcome-file-list>  
    </web-app>  
接下來是SpringMVC的配置文件springmvc-servlet.xml
    <?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:tx="http://www.springframework.org/schema/tx"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
        http://www.springframework.org/schema/tx     
        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  

        <!-- 【配置映射處理器】 -->  
        <!-- SpringMVC自帶的映射處理器均實現了Spring的Ordered接口,這意味著我們可以在應用系統中聲明多個處理器映射 -->  
        <!-- 并且可以設置它們的優先級,這主要體現在order屬性上,其值越小,則對應的該映射處理器的優先級越高 -->  
        <!-- 本例中,SimpleUrlHandlerMapping的order值比BeanNameUrlHandlerMapping的小 -->  
        <!-- 這意味著DispatcherServlet在映射URL的時候,首先會咨詢SimpleUrlHandlerMapping -->  
        <!-- 只有在SimpleUrlHandlerMapping無法返回結果時,才咨詢BeanNameUrlHandlerMapping -->  
        <bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">  
            <property name="order" value="1"/>  
        </bean>  
        <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
            <property name="order" value="0"/>  
            <property name="mappings">  
                <props>  
                    <prop key="/userlist22.htm">userController</prop>  
                    <prop key="/userlist33.htm">userController</prop>  
                </props>  
            </property>  
        </bean>  

        <!-- 這里的id="userController"對應的是<bean id="simpleUrlMapping">中的<prop>里面的value -->  
        <bean id="userController" class="com.jadyer.controller.UserController"/>  

        <!-- DispatcherServlet使用的默認處理器映射是BeanNameUrlHandlerMapping,它使用URL樣式的名字 -->  
        <bean name="/userlist11.htm" class="com.jadyer.controller.UserController"/>  
    </beans>  
然后是我們常見的Spring配置文件applicationContext-view.xml
    <?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:tx="http://www.springframework.org/schema/tx"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd   
        http://www.springframework.org/schema/tx     
        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  

        <!-- 【配置視圖解析器】 -->  
        <!-- InternalResourceViewResolver會在ModelAndView返回的視圖名前加上prefix指定的前綴,再在最后加上suffix指定的后綴 -->  
        <!-- 由于UserController返回的ModelAndView中的視圖名是userlist,故該視圖解析器將在/WEB-INF/jsp/userlist.jsp處查找視圖 -->  
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <property name="prefix" value="/WEB-INF/jsp/"/>  
            <property name="suffix" value=".jsp"/>  
        </bean>  
    </beans>  
接下來是首頁index.jsp
    <%@ page language="java" pageEncoding="UTF-8"%>  
    <a href="<%=request.getContextPath()%>/userlist11.htm">Visit "/userlist11.htm" to my SpringMVC demo page</a>  
    <br/>  
    <br/>  
    <a href="<%=request.getContextPath()%>/userlist22.htm">Visit "/userlist22.htm" to my SpringMVC demo page</a>  
    <br/>  
    <br/>  
    <a href="<%=request.getContextPath()%>/userlist33.htm">Visit "/userlist33.htm" to my SpringMVC demo page</a>  
下面是響應請求結果的userlist.jsp
    <%@ page language="java" pageEncoding="UTF-8"%>  
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
    <h2>Welcome to my SpringMVC demo page</h2>  
    <c:forEach items="${users}" var="user">  
        <c:out value="${user.username}"/><br/>  
        <c:out value="${user.password}"/><br/>  
        <c:out value="${user.address}"/><br/>  
        <c:out value="${user.age}"/><br/>  
    </c:forEach>  

    <!--  
    以下是,處理對"/userlist.htm"的請求的整個工作步驟  
    1、DispatcherServlet接受對"/userlist.htm"樣式的URL請求  
    2、DispatcherServlet詢問BeanNameUrlHandlerMapping  
      詢問Bean的名字是"/userlist.htm"的控制器,并且找到了UserController的Bean  
    3、DispatcherServlet分發給UserController來處理這個請求  
    4、UserController返回一個ModelAndView對象,它帶有一個邏輯視圖名"userlist",以及保存在"users"屬性中的值  
    5、DispatcherServlet詢問它的視圖解析器(配置為InternalResourceViewResolver)  
      查找邏輯名為userlist的視圖,InternalResourceViewResolver返回/WEB-INF/jsp/userlist.jsp路徑  
    6、DispatcherServlet將請求導向/WEB-INF/jsp/userlist.jsp頁面  
    -->  
這是用到的User.java
    package com.jadyer.model;  

    /** 
     * User 
     * @author 宏宇 
     * @editor Jan 27, 2012 11:41:15 AM 
     */  
    public class User {  
        private String username;  
        private String password;  
        private String address;  
        private Integer age;  

        public String getUsername() {  
            return username;  
        }  
        public void setUsername(String username) {  
            this.username = username;  
        }  
        public String getPassword() {  
            return password;  
        }  
        public void setPassword(String password) {  
            this.password = password;  
        }  
        public String getAddress() {  
            return address;  
        }  
        public void setAddress(String address) {  
            this.address = address;  
        }  
        public Integer getAge() {  
            return age;  
        }  
        public void setAge(Integer age) {  
            this.age = age;  
        }  
    }  

最后是SpringMVC的核心控制器UserController.java

    package com.jadyer.controller;  

    import java.util.ArrayList;  
    import java.util.List;  

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

    import org.springframework.web.servlet.ModelAndView;  
    import org.springframework.web.servlet.mvc.AbstractController;  

    import com.jadyer.model.User;  

    /** 
     * UserController 
     * @author 宏宇 
     * @editor Jan 27, 2012 11:57:33 AM 
     */  
    public class UserController extends AbstractController {  
        @Override  
        protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {  
            List<User> userList = new ArrayList<User>();  
            User user11 = new User();  
            User user22 = new User();  
            user11.setUsername("張起靈");  
            user11.setPassword("02200059");  
            user11.setAddress("陰山古樓");  
            user11.setAge(27);  
            user22.setUsername("吳三省");  
            user22.setPassword("95000220");  
            user22.setAddress("蛇沼鬼城");  
            user22.setAge(37);  
            userList.add(user11);  
            userList.add(user22);  
            //ModelAndView類在SpringMVC中是一個很重要的概念  
            //控制器執行方法都必須返回一個ModelAndView,ModelAndView對象保存了視圖以及視圖顯示的模型數據  
            //第一個參數:視圖組件的邏輯名稱。這里視圖的邏輯名稱是userlist,視圖解析器會使用該名稱查找實際的View對象  
            //第二個參數:傳遞給視圖的,模型對象的名稱  
            //第三個參數:傳遞給視圖的,模型對象的值  
            return new ModelAndView("userlist", "users", userList);  
        }  
    }  

轉自:http://blog.csdn.net/jadyer/article/details/7574635

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!