实现spring mvc流程
2019獨角獸企業重金招聘Python工程師標準>>>
首先,配置web.xml文件來啟動spring
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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_2_5.xsd"><!--spring配置文件的加載,如果有多個配置文件,可以使用<param-value>classpath:application*.xml</param-value>*匹配任意字符,這樣就可以加載所有application開頭的xml文件,這里配置文件寫在src目錄下--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--spring是通過servlet的監聽器啟動的--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--spring mvc就是一個servlet,現在把這個servlet命名為myspringmvc,這里需要注意的是,spring mvc需要一個配置文件,其命名規則是 servlet名稱-servlet.xml,由于這里的servlet名稱是myspringmvc,所以需要在WEB-INF目錄下建立一個myspringmvc-servlet.xml的文件--><servlet><servlet-name>myspringmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myspringmvc</servlet-name><!--spring mvc只處理.html為后綴的請求--><url-pattern>*.html</url-pattern></servlet-mapping><!--默認首頁--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list> </web-app> 由于這里的servlet名稱是myspringmvc,所以需要在WEB-INF下新建一個myspringmvc-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: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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 把標記了@Controller注解的類轉換為控制器,base-package表示初始化時要掃描的包,*號表示掃描全部的包 --> <context:component-scan base-package="*" /> <!-- 設置視圖的根目錄和后綴 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/web/" p:suffix=".jsp" /> </beans>下面是當前項目的文件目錄
?
UserController.java
package user.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import user.entity.User; import user.entity.User2;@Controller public class UserController {@RequestMapping("/login-index")public String loginIndex() {return "user/login-index";}@RequestMapping("/login")public String login(User user,User2 user2,ModelMap modelMap) { // modelMap.addAttribute(user); // modelMap.addAttribute(user2);modelMap.addAttribute("key", "value");return "user/login-success";} }User.java
package user.entity;public class User {private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}?
User2.java package user.entity;public class User2 {private String username;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}login-index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML> <html><head><title>login</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><form action="/spring/login.html" method="get">username:<input type="text" name="username"><input type="submit" value="login"></form></body> </html>login-success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML> <html><head><title>success</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body>user: ${user.username }<br/>user2: ${user2.username }<br/>${key }</body> </html>使用Tomcat6部署項目之后,訪問 ?http://localhost/項目名稱/login-index.html,這時會訪問?
@RequestMapping("/login-index")所指的方法,并返回user/login-index,
也就是/WEB-INF/web/ user/login-index.jsp頁面。
表單中輸入myname并提交,因為我表單設置的method="get",所以這時候瀏覽器的路徑為http://localhost/項目名稱/login.html?username=myname,訪問@RequestMapping("/login")注解所指的方法,
并返回login-success.jsp頁面。
spring接受表單的參數與struts2有所不同,表單傳遞的參數username會自動匹配
login(User user,User2 user2,ModelMap modelMap)中的user,user2的成員變量username并給其賦值,
這導致兩個bean都獲取到了參數,相比之下struts2用user.username更能精準的賦值。
user,user2默認自動傳遞到jsp頁面,
ModelMap 是給跳轉的jsp頁面傳參,相當于HttpServletRequest?.
這里只是簡單的介紹了spring mvc的部分功能,其實還有很多高級功能沒有介紹,以下是官方文檔
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html
?
轉載于:https://my.oschina.net/eatsuger/blog/78779
總結
以上是生活随笔為你收集整理的实现spring mvc流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2个点之间的旋转
- 下一篇: 550 5.7.1 Client doe