SpringMVC

SpringMVC

參考網站how2java教程


一,springmvc入門

###1,導入jar包###

2,配置web.xml###

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
    <servlet-name>springmvc</servlet-name>
    <!-- DispatcherServlet就是一個Servlet,也是對請求進行轉發的Servlet。在這裏就是把所有的請求交給Servlet處理,而DispatcherServlet的工作就是把請求進行分發(把請求交給具體的Controller)--> 
    <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>/</url-pattern> <!--會攔截URL中帶“/”的請求。 --> 
</servlet-mapping>

</web-app>

DispatcherServlet的作用:

1、文件上傳解析,如果請求類型是multipart將通過MultipartResolver進行文件上傳解析;
2、通過HandlerMapping,將請求映射到處理器(返回一個HandlerExecutionChain,它包括一個處理器、多個HandlerInterceptor攔截器);
3、通過HandlerAdapter支持多種類型的處理器(HandlerExecutionChain中的處理器);
4、通過ViewResolver解析邏輯視圖名到具體視圖實現;
5、本地化解析;
6、渲染具體的視圖等;
7、如果執行過程中遇到異常將交給HandlerExceptionResolver來解析。

3,配置springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="simpleUrlHandlerMapping" 
          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="mappinng">
            <props>
                <prop key="/index">indexController</prop><!-- 訪問的路徑爲/index時候,映射交給id爲indexController的bean去處理。 -->
            </props>
          </property>
    </bean>
    <!-- id=indexController的bean配置爲類:IndexController -->
    <bean id="indexController" class="controller.IndexController"></bean>
</beans>

4,控制類IndexController

springmvc通過ModelAndView對象把視圖(view)和模型(數據:Model)結合起來

package 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 IndexController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	ModelAndView mav = new ModelAndView("index.jsp");
	mav.addObject("message", "Hello Spring MVC");
	return mav;
}
}

springmvc通過ModelAndView對象把視圖(view)和模型(數據:Model)結合起來

ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");

index.jsp代表視圖
模型代表message,內容是Hello Spring MVC

5,創建index.jsp

在WebContent目錄下創建index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8" isELIgnored="false"%>
    
    <h1>${message}</h1>

6,測試

輸入 http://localhost:8080/項目名/index

結果:此處輸入圖片的描述

7,原理圖

springmvc

二,視圖定位

作用:1,不是所有的視圖都會使用jsp來做,還可以是JSF,html 等其他的方式。
用這樣的手段,如果要把視圖從index.jsp改爲index.html,就不需要修改代碼,而僅僅需要修改配置文件即可。
2,另一個便利之處在於,如果要批量修改視圖文件所處於的位置,按照以前的辦法,也需要對每個類逐一修改,工作量大,容易出錯。 而使用這種方式,維護成本就小多了。

1,web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
    <servlet-name>springmvc</servlet-name>
    <!-- DispatcherServlet就是一個Servlet,也是對請求進行轉發的Servlet。在這裏就是把所有的請求交給Servlet處理,而DispatcherServlet的工作就是把請求進行分發(把請求交給具體的Controller)--> 
    <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>/</url-pattern> <!--會攔截URL中帶“/”的請求。 --> 
</servlet-mapping>

</web-app>

2,springmvc-servlet.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--作用是把視圖約定在 /WEB-INF/page/*.jsp 這個位置 -->
    <bean id="viewResolver" 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <!-- 前綴:ModelAndView mav = new ModelAndView("index")中的index文件放到WEB-INF/page目錄下 -->
        <property name="prefix" value="/WEB-INF/page/"/>
        <!-- 後綴:index文件格式爲jsp -->
        <property name="suffix" value=".jsp"/>
</bean>

    <bean id="simpleUrlHandlerMapping" 
       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mapping">
            <props>
                <prop key="/index">indexController</props>
            </props>
        </property>      
    </bean>
    <bean id="indexController" class="controller.IndexController"></bean>
</beans>

3,IndexController

 package 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 IndexController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
	ModelAndView mav = new ModelAndView("index");//視圖定位就是把index.jsp改爲index
	mav.addObject("message", "Hello Spring MVC");
	return mav;
}
}

4,index.jsp

把index.jsp移動到WEB-INF下的新建目錄page

三,註解方式

1,IndexController

package controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller//表示該類是一個控制器
public class IndexController {
@RequestMapping("/index")//表示路徑/index會映射到該方法上
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    ModelAndView mav = new ModelAndView("index");
    mav.addObject("message", "Hello Spring MVC");
    return mav;
}
}

2,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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context        
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
<context:component-scan base-package="controller" /><!-- 表示從包controller下掃描有@Controller註解的類-->
<bean id="irViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".jsp" />
</bean>
</beans>

3,測試

打開頁面:http://127.0.0.1:8080/springmvc/index

此處輸入圖片的描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章