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