程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 詳解SpringMVC 根底教程 復雜入門實例

詳解SpringMVC 根底教程 復雜入門實例

編輯:關於JAVA

詳解SpringMVC 根底教程 復雜入門實例。本站提示廣大學習愛好者:(詳解SpringMVC 根底教程 復雜入門實例)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解SpringMVC 根底教程 復雜入門實例正文


一個復雜的入門實例教程

該實例的源碼和實例中的jar

源碼:http://xiazai.jb51.net/201612/yuanma/SpringMVC_jb51.zip

所需求的jar: http://xiazai.jb51.net/201612/yuanma/SpringMVCjar_jb51.zip

另外一篇關於SpringMVC 文件上傳,多文件上傳:

復雜注解配置的實例:

一、創立項目:

1、樹立新的靜態web項目:

2、為項目命名為:SpringMVC_01

3、添加tomcat運轉時環境\依賴庫  假如是MyEclipse的話創立web項目時就不需求此步驟

右鍵項目,點擊Build Path->Add Librares:

添加完後會多出tomcat 的 Servlet包

4、最後添加Spring及SpringMVC所需求的jar,我添加以下jar到項目中

二、配置文件:

1、首先在web.xml中配置一個DispatcherServlet,並經過<servlet-mapping>指定需求阻攔的url。 上面xml中配置一個阻攔.html為後綴的url.

<!-- 配置Spring MVC DispatcherServlet --> 
  <servlet> 
    <servlet-name>MVC</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <!-- 初始化參數 --> 
    <init-param> 
      <!-- 加載SpringMVC的xml到 spring的上下文容器中 --> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
        /WEB-INF/classes/mvc*.* 
      </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
  </servlet> 
 
  <!-- 配置DispatcherServlet所需求阻攔的 url --> 
  <servlet-mapping> 
    <servlet-name>MVC</servlet-name> 
    <url-pattern>*.html</url-pattern> 
  </servlet-mapping> 

先配置一個servlet 然後 加載SpringMVC的xml文件到Spring的上下文中。然後配置servlet-mapping,servlet-name為剛剛的servlet中的配置的name,然後指定要阻攔的url為*.html

2、配置Spring的上下文監聽器,並且指定Spring的xml配置文件的途徑。

<!-- 監聽spring上下文容器 --> 
<listener> 
  <listener-class> 
    org.springframework.web.context.ContextLoaderListener 
  </listener-class> 
</listener> 
 
<!-- 加載spring的xml配置文件到 spring的上下文容器中 --> 
<context-param> 
  <param-name>contextConfigLocation</param-name> 
  <param-value>classpath:root-context.xml</param-value> 
</context-param> 

這裡指定的途徑classpath為 項目編譯後的classes文件中。

最終web.xml文件內容:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" 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_3_0.xsd"> 
  <display-name></display-name> 
   
   
  <!-- 監聽spring上下文容器 --> 
  <listener> 
    <listener-class> 
      org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
  </listener> 
   
  <!-- 加載spring的xml配置文件到 spring的上下文容器中 --> 
  <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:root-context.xml</param-value> 
  </context-param> 
   
  <!-- 配置Spring MVC DispatcherServlet --> 
  <servlet> 
    <servlet-name>MVC</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <!-- 初始化參數 --> 
    <init-param> 
      <!-- 加載SpringMVC的xml到 spring的上下文容器中 --> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
        /WEB-INF/classes/mvc*.* 
      </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
  </servlet> 
 
  <!-- 配置DispatcherServlet所需求阻攔的 url --> 
  <servlet-mapping> 
    <servlet-name>MVC</servlet-name> 
    <url-pattern>*.html</url-pattern> 
  </servlet-mapping> 
 
  <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
  </welcome-file-list> 
 
 
</web-app> 

3、創立SpringMVC所需求的xml文件和applicationContext的xml文件,這裡由於第一步中配置的servlet中init-param所需求加載的格式為:mvc*.* 就是去尋覓為mvc掃尾的文件所以創立SpringMVC的xml文件時必需要有mvc掃尾,我命名為:mvc-context.xml,並且依照context-param中的配置,將applicationContext文件命名為:root-context.xml;

4、配置mvc-context.xml:

首先經過import標簽 導入root-context.xml,然後經過component-scan標簽掃描指定包名,讓該包下的一切Java類的spring注解失效

然後配置SpringMVC的視圖渲染解析器,讓其前綴為/page/ 後綴為.jsp  這樣可以SpringMVC 所需求渲染的途徑可以在/page/前往值.jsp中尋覓。

<!-- 加載Spring的全局配置文件 --> 
  <beans:import resource="root-context.xml" /> 
   
  <!-- SpringMVC配置 --> 
   
  <!-- 經過component-scan 讓Spring掃描org.swinglife.controller下的一切的類,讓Spring的代碼注解失效 --> 
  <context:component-scan base-package="org.swinglife.controller"></context:component-scan> 
   
  <!-- 配置SpringMVC的視圖渲染器, 讓其前綴為:/page/ 後綴為.jsp 將視圖渲染到/page/<method前往值>.jsp中 --> 
  <beans:bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
    p:prefix="/page/" p:suffix=".jsp"> 
    </beans:bean> 

最後mvc-context.xml和root-context.xml為:

mav-context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" 
  xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" 
  xmlns:context="http://www.springframework.org/schema/context" 
  xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
  <!-- 加載Spring的全局配置文件 --> 
  <beans:import resource="root-context.xml" /> 
   
  <!-- SpringMVC配置 --> 
   
  <!-- 經過component-scan 讓Spring掃描org.swinglife.controller下的一切的類,讓Spring的代碼注解失效 --> 
  <context:component-scan base-package="org.swinglife.controller"></context:component-scan> 
   
  <!-- 配置SpringMVC的視圖渲染器, 讓其前綴為:/ 後綴為.jsp 將視圖渲染到/page/<method前往值>.jsp中 --> 
  <beans:bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
    p:prefix="/page/" p:suffix=".jsp"> 
    </beans:bean> 
 
 
</beans:beans> 

root-context.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.2.xsd 
        http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context-3.2.xsd 
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> 
  <!-- Root Context: defines shared resources visible to all other web components --> 
 
    
</beans> 

三、編寫Controller

1、創立org.swinglife.controller的package,用來寄存Controller類,接著新建HomeController.java,用來編寫首頁的Controller

2、運用注解@Controller將HomeController類定義為一個Controller,並且在辦法中經過@RequestMapping(“value”)來指定所需求訪問的途徑或許辦法名。 SpringMVC可以經過一個@Controller注解將一個POJO轉化為處置懇求的控制器,經過@RequestMapping為控制器指定哪些需求的懇求。

@Controller  
public class HomeController { 
   
  /*** 
   * 首頁 前往至/page/home.jsp頁面 
   * @return 
   */ 
  @RequestMapping("index") 
  public ModelAndView index(){ 
    //創立模型跟視圖,用於渲染頁面。並且指定要前往的頁面為home頁面 
    ModelAndView mav = new ModelAndView("home"); 
    return mav; 
  } 
} 

辦法中定義了ModelAndView對象,經過該對象指定所需求渲染的視圖為home最後前往ModelAndView 將頁面渲染到home.jsp中。

3、最後在WebContent目錄中 創立/page/home.jsp使SpringMVC可以尋覓並渲染該頁面視圖。

<%@ page language="java" contentType="text/html; charset=GB18030" 
  pageEncoding="GB18030"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=GB18030"> 
<title>home</title> 
</head> 
<body> 
<h2>spring mvc 實例</h2> 
 
 
</body> 
</html> 

如今一個完好的SpringMVC的形式曾經搭建完成了,可以運轉項目來停止測試。

四、編寫參數的提交與傳遞:

1、編寫一個新的UserController類來假定用戶登錄,將username,password提交到Controller中停止處置,並且登陸成功後將username,password傳遞到成功的頁面。

創立UserController.java

創立/page/succ.jsp頁面 作為用戶成功登陸頁面

UserController中的代碼:

@Controller 
public class UserController { 
 
  /*** 
   * 用戶登陸 
   * <p>注解配置,只允許POST提交到該辦法 
   * @param username 
   * @param password 
   * @return 
   */ 
  @RequestMapping(value="login",method=RequestMethod.POST) 
  public ModelAndView login(String username,String password){ 
    //驗證傳遞過去的參數能否正確,否則前往到登陸頁面。 
    if(this.checkParams(new String[]{username,password})){ 
      //指定要前往的頁面為succ.jsp 
      ModelAndView mav = new ModelAndView("succ"); 
      //將參數前往給頁面 
      mav.addObject("username",username); 
      mav.addObject("password", password); 
      return mav; 
    } 
    return new ModelAndView("home"); 
  } 
   
  /*** 
   * 驗證參數能否為空 
   * @param params 
   * @return 
   */ 
  private boolean checkParams(String[] params){ 
    for(String param:params){ 
      if(param==""||param==null||param.isEmpty()){ 
        return false; 
      } 
    } 
    return true; 
  } 

首先指定@Controller,然後指定@RequestMapping為login辦法;

需求留意的是這次@RequestMapping中指定了頁面辦法形式必需為POST形式否則將無法訪問。其次value參數指定訪問途徑。
並且在login辦法中設定帶參,參數為表單中的name屬性。

然後經過ModelAndView的 addObject辦法將參數參加到request中,這樣則可以在前往的頁面中顯示這些參數。

在此之外還有其他將參數傳遞到頁面中的方式為:

/*** 
 * 另一種參數傳遞的方式 
 * 經過request來處置懇求過去的參數。 
 * @param username 
 * @param password 
 * @param request 
 * @return 
 */ 
@RequestMapping(value="login",method=RequestMethod.POST) 
public ModelAndView login(String username,String password,HttpServletRequest request){ 
  request.setAttribute("username", username); 
  request.setAttribute("password", password); 
  return new ModelAndView("succ"); 
} 

以上這種方式則是直接經過將參數參加到request中來運用。

2、編寫succ.jsp頁面跟表單頁面:
succ.jsp:

<body> 
<h2>登陸</h2> 
  
username:${username } 
<p> 
password:${password } 
  
</body> 

form:
<form action="login.html" method="post"> 
  username:<input type="text" name="username" /> 
  <p> 
  password:<input type="password" name="password"/> 
  <p> 
  <input type="submit" value="submit" /> 
</form> 

3、最後運轉項目來停止測試:



 

OK都完成了。以上就是一個比擬復雜的SpringMVC的示例搭建了。

在給出的源碼中,還有另一中直接用String當做前往值來指定顯示頁面的辦法。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved