Spring MVC學習(二)-----原理分析之簡單實例

簡單的實例

學習了SpringMVC 的整體架構,SpringMVC應用開發一般包括以下幾步

  1. 配置web.xml,指定業務層對應的Spring配置文件,定義DispatcherServlet(也可以編程配置)
  2. 編寫處理請求的控制器
  3. 編寫視圖對象
  4. 配置SpringMVC的配置文件,使控制器 、視圖解析器等生效

以下是項目結構

在這裏插入圖片描述
1.1 web.xml

上一頁已經很詳細的講解了

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/appcationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <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>*.html</url-pattern>
    </servlet-mapping>
</web-app>

1.2.Java配置 與web.xml 配置等效

package com.config;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

public class SpringmvcApplicationInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        XmlWebApplicationContext appContext = new XmlWebApplicationContext();
        appContext.setConfigLocation("/WEB-INF/springmvc-servlet.xml");
        ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcher", new DispatcherServlet(appContext));
        dynamic.setLoadOnStartup(1);
        dynamic.addMapping("*.html*");
    }
}
  1. 編寫處理請求的控制器
package com.sjy;
@Controller // 使用Controller 註解將一個POJO轉化爲處理請求的控制器
@RequestMapping("/user")//通過RequestMapping爲控制器指定處理那些URL的請求
public class UserController {

   @RequestMapping("/register")
   public String register(){
       return "register";
   }
   @RequestMapping(method = RequestMethod.GET)
   public ModelAndView user(){

       ModelAndView modelAndView = new ModelAndView();
       modelAndView.setViewName("c");
       modelAndView.addObject("sjy","天天向上");
       return modelAndView;
   }
   @RequestMapping("/s")
   @ResponseBody
   public String s(){
       return "register";
   }
}

3.視圖對象
register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>添加用戶</title>
</head>
<body>
<div>
    <%-- 用於跳轉路徑 --%> 
   <a href="${pageContext.request.contextPath}/user.html">sssss</a>
</div>
</body>
</html>

c.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8"%>
<html>
<head>
    <title>成功</title>
</head>
<body>
<div>
    恭喜,用戶${sjy} ,嘻嘻
</div>
</body>
</html>
  1. 配置Spring MVC的配置文件
    springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<?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:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
	<!--使Spring掃描com.sjy包下的所有類,讓標註Spring註解的類生效-->
   <context:component-scan base-package="com.sjy"/>
    <!--定義了一個視圖名稱解析器,將視圖邏輯名解析爲/WEB_INF/views/<viewsName.jsp> -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
     p:prefix="/WEB-INF/views/"
     p:suffix=".jsp"/>
</beans>

tomcat運行
在這裏插入圖片描述
在這裏插入圖片描述
回顧SpringMVC處理請求的整個過程

  1. DispatcherServlet接受到客戶端的/user.html請求
  2. DispatcherServlet使用DefaultAnnotationHandlerMapping查找負責處理該請求的處理器
  3. DispatcherServlet將請求分發給名爲/user.html的UserController處理器。
  4. 處理器完成業務處理後,返回ModelAndView對象,其中View名字爲c,包含一個鍵位sjy的字符串。
  5. DispatcherServlet調用InternalResourceViewResolver組件,對ModelAndView中的邏輯視圖名進行解析,得到真實的/WEB-INF/views/c.jsp視圖對象。
  6. DispatcherServlet使用/WEB-INF/views/c.jsp對模型的中的”天天向上“進行渲染。
  7. 返回響應
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章