詳解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當做前往值來指定顯示頁面的辦法。
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持。