天天看點

@RequestMapping和RequestParam注解的使用

 1.在Web.xml中配置前端控制器DispatcherServlet

[html]  view plain  copy

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">  
  3.   <display-name>RequestMappingTest</display-name>  
  4. <!-- 定義Spring MVC的前端控制器 -->  
  5.   <servlet>  
  6.     <servlet-name>springmvc</servlet-name>  
  7.     <servlet-class>  
  8.         org.springframework.web.servlet.DispatcherServlet  
  9.     </servlet-class>  
  10.     <init-param>  
  11.       <param-name>contextConfigLocation</param-name>  
  12.       <param-value>/WEB-INF/springmvc-config.xml</param-value>  
  13.     </init-param>  
  14.     <load-on-startup>1</load-on-startup>  
  15.   </servlet>  
  16.   <!-- 讓Spring MVC的前端控制器攔截所有請求 -->  
  17.   <servlet-mapping>  
  18.     <servlet-name>springmvc</servlet-name>  
  19.     <url-pattern>/</url-pattern>  
  20.   </servlet-mapping>  
  21.   <!-- 編碼過濾器 -->  
  22.   <filter>  
  23.         <filter-name>characterEncodingFilter</filter-name>  
  24.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  25.         <init-param>  
  26.             <param-name>encoding</param-name>  
  27.             <param-value>UTF-8</param-value>  
  28.         </init-param>  
  29.  </filter>  
  30.     <filter-mapping>  
  31.         <filter-name>characterEncodingFilter</filter-name>  
  32.         <url-pattern>/*</url-pattern>  
  33.     </filter-mapping>  
  34. </web-app>  

2.配置Spring MVC的Controller

   springmvc-config.xml

[html]  view plain  copy

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="  
  7.         http://www.springframework.org/schema/beans  
  8.         http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
  9.         http://www.springframework.org/schema/mvc  
  10.         http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd       
  11.         http://www.springframework.org/schema/context  
  12.         http://www.springframework.org/schema/context/spring-context-4.2.xsd">  
  13.     <!-- spring可以自動去掃描base-pack下面的包或者子包下面的java檔案,  
  14.         如果掃描到有Spring的相關注解的類,則把這些類注冊為Spring的bean -->  
  15.     <context:component-scan base-package="org.fkit.controller"/>  
  16.     <!-- 視圖解析器  -->  
  17.      <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
  18.         <!-- 字首 -->  
  19.         <property name="prefix">  
  20.             <value>/WEB-INF/content/</value>  
  21.         </property>  
  22.         <!-- 字尾 -->  
  23.         <property name="suffix">  
  24.             <value>.jsp</value>  
  25.         </property>  
  26.     </bean>  
  27. </beans>  

3.前端頁面

 loginForm.jsp

[html]  view plain  copy

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>登入頁面</title>  
  8. </head>  
  9. <body>  
  10. <h3>登入頁面</h3>  
  11. <form action="login" method="post">  
  12.      <table>  
  13.          <tr>  
  14.             <td><label>登入名: </label></td>  
  15.              <td><input type="text" id="loginname" name="loginname" ></td>  
  16.          </tr>  
  17.          <tr>  
  18.             <td><label>密碼: </label></td>  
  19.              <td><input type="password" id="password" name="password"></td>  
  20.          </tr>  
  21.          <tr>  
  22.              <td><input id="submit" type="submit" value="登入"></td>  
  23.          </tr>  
  24.      </table>  
  25. </form>  
  26. </body>  
  27. </html>  

registerForm.jsp

[html]  view plain  copy

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>注冊頁面</title>  
  8. </head>  
  9. <body>  
  10. <h3>注冊頁面</h3>  
  11. <form action="register" method="post">  
  12.      <table>  
  13.          <tr>  
  14.             <td><label>登入名: </label></td>  
  15.              <td><input type="text" id="loginname" name="loginname" ></td>  
  16.          </tr>  
  17.          <tr>  
  18.             <td><label>密碼: </label></td>  
  19.              <td><input type="password" id="password" name="password"></td>  
  20.          </tr>  
  21.          <tr>  
  22.             <td><label>真實姓名: </label></td>  
  23.              <td><input type="text" id="username" name="username" ></td>  
  24.          </tr>  
  25.          <tr>  
  26.              <td><input id="submit" type="submit" value="注冊"></td>  
  27.          </tr>  
  28.      </table>  
  29. </form>  
  30. </body>  
  31. </html>  

welcome.jsp

[html]  view plain  copy

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>測試@RequestMapping注解</title>  
  8. </head>  
  9. <body>  
  10. <!-- 頁面可以通路Controller傳遞傳遞出來的模型User對象 -->  
  11. 歡迎[${requestScope.user.username }]登陸  
  12. <br>  
  13. </body>  
  14. </html>  

4.後端的實作

User.Java

[java]  view plain  copy

  1. package org.fkit.domain;  
  2. import java.io.Serializable;  
  3. //域對象,實作序列化接口  
  4. public class User implements Serializable {  
  5.     private String loginname;  
  6.     private String password;  
  7.     private String username;  
  8.     public User() {  
  9.         super();  
  10.         // TODO Auto-generated constructor stub  
  11.     }  
  12.     public String getLoginname() {  
  13.         return loginname;  
  14.     }  
  15.     public void setLoginname(String loginname) {  
  16.         this.loginname = loginname;  
  17.     }  
  18.     public String getPassword() {  
  19.         return password;  
  20.     }  
  21.     public void setPassword(String password) {  
  22.         this.password = password;  
  23.     }  
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30. }  

UserController.java

[java]  view plain  copy

  1. package org.fkit.controller;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import org.apache.commons.logging.Log;  
  5. import org.apache.commons.logging.LogFactory;  
  6. import org.fkit.domain.User;  
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.ui.Model;  
  9. import org.springframework.web.bind.annotation.RequestMapping;  
  10. import org.springframework.web.bind.annotation.RequestMethod;  
  11. import org.springframework.web.bind.annotation.RequestParam;  
  12. //Controller注解用于訓示該類是一個控制器,可以同時處理多個請求動作  
  13. @Controller  
  14. //RequestMapping可以用來注釋一個控制器類,此時,所有方法都将映射為相對于類級别的請求,   
  15. //表示該控制器處理所有的請求都被映射到 value屬性所訓示的路徑下  
  16. @RequestMapping(value="/user")  
  17. public class UserController {  
  18.     // 靜态List<User>集合,此處代替資料庫用來儲存注冊的使用者資訊  
  19.     private static List<User> userList;  
  20.     // UserController類的構造器,初始化List<User>集合  
  21.     public UserController() {  
  22.         super();  
  23.         userList = new ArrayList<User>();  
  24.         // TODO Auto-generated constructor stub  
  25.     }  
  26.     // 靜态的日志類LogFactory  
  27.     private static final Log logger = LogFactory.getLog(UserController.class);  
  28.     // 該方法映射的請求為http://localhost:8080/context/user/register,該方法支援GET請求  
  29.     @RequestMapping(value="/register",method=RequestMethod.GET)  
  30.     public String registerForm() {  
  31.          logger.info("register GET方法被調用...");  
  32.          // 跳轉到注冊頁面  
  33.          return "registerForm";  
  34.      }  
  35.      // 該方法映射的請求為http://localhost:8080/RequestMappingTest/user/register,該方法支援POST請求  
  36.      @RequestMapping(value="/register",method=RequestMethod.POST)  
  37.      // 将請求中的loginname參數的值賦給loginname變量,password和username同樣處理  
  38.      public String register(@RequestParam("loginname") String loginname,  
  39.          @RequestParam("password") String password,  
  40.          @RequestParam("username") String username){  
  41.         logger.info("register POST方法被調用...");  
  42.             // 建立User對象  
  43.            User user=new User();  
  44.            user.setLoginname(loginname);  
  45.            user.setPassword(password);  
  46.            user.setUsername(username);  
  47.            // 模拟資料庫存儲User資訊  
  48.            userList.add(user);  
  49.            // 跳轉到登入頁面  
  50.            return "loginForm";  
  51.          }  
  52.     // 該方法映射的請求為http://localhost:8080/RequestMappingTest/user/login  
  53.     @RequestMapping("/login")  
  54.     public String login(  
  55.             // 将請求中的loginname參數的值賦給loginname變量,password同樣處理  
  56.              @RequestParam("loginname") String loginname,  
  57.              @RequestParam("password") String password,  
  58.              Model model){  
  59.         logger.info("登入名:"+loginname + " 密碼:" + password);  
  60.         // 到集合中查找使用者是否存在,此處用來模拟資料庫驗證  
  61.         for(User user :userList){  
  62.             if(user.getLoginname().equals(loginname) && user.getPassword().equals(password)){  
  63.                 model.addAttribute("user",user);  
  64.                 return "welcome";  
  65.             }  
  66.         }  
  67.         return "loginForm";  
  68.     }  
  69. }  

截圖:

@RequestMapping和RequestParam注解的使用
@RequestMapping和RequestParam注解的使用
@RequestMapping和RequestParam注解的使用
@RequestMapping和RequestParam注解的使用

------->源碼:百度網盤極速下載下傳