項目還是基於之前【001】中建立的結構,這一章,通過一個簡單的demo,熟悉下註解的使用。
先看下要實現的效果。
首先是註冊界面,其次是登錄界面,最後是歡迎界面。
---------------------------------------------------------【我是分界線】----------------------------------------------------
【1】首先創建一個User類,路徑爲src/com/test/model/User.java。結構圖如下所示:
User.java的代碼如下,這個類是一個域對象,用來接收並封裝前臺頁面傳遞過來的數據。通常,在構建域對象時,需要考慮該對象可能需要進行網絡傳輸,本地緩存,因此建議實現序列化接口Serializable。
//域對象,實現序列化接口
public class User implements Serializable{
private String loginname;
private String username;
private String password;
//set get方法略
【2】創建UserController.java文件,路徑爲:src\com\test\controller\UserController.java
@Controller @RequestMapping(value="/user") public class UserController { private static List<User> userList; /* @Autowired private static User user;*/ public UserController() { this.userList = new ArrayList<>();//初始化userlist } @RequestMapping(value = "/register",method = RequestMethod.GET) public String registerForm() { return "/user/registerForm"; } @RequestMapping(value = "/register",method = RequestMethod.POST) public String register(@RequestParam("loginname") String loginname, @RequestParam("username") String username, @RequestParam("password") String password) { User user = new User(); user.setLoginame(loginname); user.setUsername(username); user.setPassword(password); //存儲user信息 userList.add(user); //跳轉頁面到登錄頁面 return "/user/loginForm"; } @RequestMapping(value = "login") public String login(@RequestParam("loginname") String loginname, @RequestParam("password") String password, Model model) { //到集合中查詢用戶是否存在 for (User user : userList){ if (user.getLoginame().equals(loginname)&& user.getPassword().equals(password)){ model.addAttribute("user",user); return "/user/welcome"; } } return "/user/loginForm"; } }//endUserController類的代碼解釋如下:
1.UserController類使用@Controller註解,是一個控制器類
2.UserController類上面使用了@RequestMapping(value="/user")的註解,表示控制器處理的所有請求都被映射到user路徑下。
3.沒有使用數據庫來儲存用戶的註冊信息,所以定義了一個靜態List類集合userList來代替數據庫存儲信息。
4.registerForm方法使用了@RequestMapping(value=“/register”,method=RequestMethod.GET)註解,表示該方法的請求爲:http://localhost:8080/user/register,並且只支持GET請求,該方法返回的字符串“registerForm”,參考dispatcher-servlet.xml中的配置信息,可以知道該方法只是跳轉到registerForm.jsp註冊頁面。
5.register方法使用了@RequestMapping(value=“/register”,method=RequestMethod.POST)註解,表示該方法的請求爲:http://localhost:8080/user/register,並且只支持POST請求。該方法使用@requestParam註解將指定的請求參數賦值給方法中的形參,之後創建一個user對象保存用戶傳遞的註冊信息,最後將user對象存儲到userList集合當中,之後的登錄頁面就可以到userList集合當中進行用戶登錄業務的邏輯判斷,該方法返回字符串“loginForm”,並跳轉到loginForm.jsp頁面。
6.login方法使用了@RequestMapping(“/login”)註解,表示該方法映射的請求爲:http://localhost:8080/user/login,這裏沒有設置method屬性,表示支持所有方式的請求。該方法用@RequestParam註解將指定地點請求參數賦值給方法中的形參,之後到集合中查找用戶是否存在,此處用來模擬數據庫驗證,login方法中還有一個參數Model對象,調用該對象的addAttribute方法可以將數據添加到request中,最後,如果用戶登錄成功,則返回字符串“welcome”,並跳轉到welcome.jsp歡迎界面,登錄失敗則返回字符串“loginForm”,並跳轉到loginForm.jsp登錄界面。
【3】創建registerForm.jsp文件,路徑爲:web\WEB-INF\jsp\user\registerForm.jsp。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>註冊頁面</title>
</head>
<body>
<form action="register" method="post">
<table>
<tr>
<td><label>登錄名:</label></td>
<td><input type="text" id="loginname" name="loginname"> </td>
</tr>
<tr>
<td><label>密碼:</label></td>
<td><input type="password" id="password" name="password"> </td>
</tr>
<tr>
<td><label>真實姓名:</label></td>
<td><input type="text" id="username" name="username"> </td>
</tr>
<tr>
<td><input type="submit" id="submit" value="註冊"> </td>
</tr>
</table>
</form>
</body>
</html>
【4】創建loginForm.jsp文件,路徑爲:web\WEB-INF\jsp\user\loginForm.jsp。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登錄界面</title>
</head>
<body>
<form action="login" method="post">
<table>
<tr>
<td><label>登錄名:</label></td>
<td><input type="text" id="loginname" name="loginname"> </td>
</tr>
<tr>
<td><label>密碼:</label></td>
<td><input type="password" id="password" name="password"> </td>
</tr>
<tr>
<td><input type="submit" id="submit" value="登錄"> </td>
</tr>
</table>
</form>
</body>
</html>
【5】創建welcome.jsp文件,路徑爲:web\WEB-INF\jsp\user\welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>歡迎界面</title>
</head>
<body>
<h1>歡迎${requestScope.user.username}</h1>
</body>
</html>
最後,部署這個web應用,在瀏覽器中輸入如下URL:http://localhost:8080/user/register。自行測試即可。效果將於文章開頭提及的效果一樣。