1. 程式人生 > >springmvc 專案完整示例08 前臺頁面以及知識點總結

springmvc 專案完整示例08 前臺頁面以及知識點總結

至此已經基本測試成功了,我們稍作完善,讓它成為一個更加完整的專案

我們現在重新規劃下邏輯

兩個頁面

一個登入頁面

一個歡迎頁面

登陸頁面輸入賬號密碼,登陸成功的話,跳轉登陸成功 歡迎頁面

並且,更新使用者登入資訊以及記錄登入日誌

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!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=UTF-8">

<title>標題</title>

</head>

<body>

${Info}

請輸入使用者名稱,密碼登陸:

<form action="/bbs/checkLogin.do" meathod="post">

使用者名稱:

<input type="text" name="userName">

<br>

密碼:

<input type="password" name="password">

<br>

<input type="submit" value="登陸">

<input type="reset" value="重置">

</form>

</body>

</html>

如果使用一些c標籤需要<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

並且要引入jstl jar包

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!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=UTF-8">

<title>標題</title>

</head>

<body>

登陸成功!

<br>

歡迎光臨!

</body>

</html>

controller

package com.bbs.web;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import com.bbs.domain.User;

import com.bbs.service.UserService;

@Controller

public class LoginController {

@Autowired

private UserService userService;

@RequestMapping(value="/login")

public String toLoginPage(HttpServletRequest request){

return "login";

}

@RequestMapping(value="/checkLogin")

public String loginPage(HttpServletRequest request,User user){

Boolean loginSucess = userService.hasMatchUser(user);

if(loginSucess){

userService.loginSucess(userService.findUserByUserName(user));

request.getSession().setAttribute("Info","");

return "welcome";

}else{

request.getSession().setAttribute("Info","請重新輸入!!");

return "redirect:/login.do";

}

}

}

開啟login展示登入頁面

表單提交到checklogin

校驗成功,執行登陸成功操作

失敗重定向到登入頁面

注意此處的

request.getSession().setAttribute("Info","請重新輸入!!");

是放到session中的,如果只是request.setAttribute是不行的,頁面讀取不到

因為重定向了

相當於重新一個request,放進去的值就變化了

順便記一下,這幾個區別

session 一次會話

request 一次請求

就像兩個人對話,request只有在你說一句話的時候,就有一個,別人說話,或者你說下一句話,就換了

對話 就是你們來來回回的說,他都是同一個

比如提交一個表單就是一個請求,開啟一個超連結也是一個請求,當請求結束這個request也就消亡了

當用戶第一次和伺服器建立連線時,伺服器就會產生一個session直到使用者離開或超時,比如關閉瀏覽器session也會銷燬

或者說,你儲存在request中的,在當次請求中都是存在的,如果你redirect就不行了

但是,session,你頁面怎麼跳轉,他都還在的

他們都可以存很多東西,能放得東西也沒啥區別,區別主要在於宣告週期

直接在web contain中進行物件的例項化。

內建物件

型別

作用域

pageContext    

javax.servlet.jsp.pageContext

page

request

javax.servlet.http.HttpServletRequest

request

response

javax.servlet.http.HttpServletResponse  

page

session

javax.servlet.http.HttpSession

session

application

javax.servlet.ServletContext

application

config

javax.servlet.ServletConfig

page

out

java.servlet.jsp.JspWriter

page

page

java.lang.Object

page

exception

java.lang.Throwable

page

顧名思義,內建物件就是本來就有的意思,直接可以使用

設定屬性:public  void  setAttribute(String  name,Object.value)

取得屬性:public  void  getAttribute(String  name)

看錶格可以看出來,他們的作用域可以區分為四種

在一個頁面範圍內:page

在一次伺服器請求範圍內:request

在一次會話範圍內:session

在一個應用伺服器範圍內:application

Session物件主要用於儲存使用者的各種資訊,直到它的生命週期超過或被人為釋放掉為止,可以通過session物件來判斷此使用者是否是合法使用者。

Session物件是javax.Servlet.http.HttpSession介面的例項化物件,session屬於http協議範疇之內的物件,所以只有唯一http包下有此介面,沒有任何繼承關係,使用者只要一連線到伺服器,則立刻分配一個session給使用者。

spring原理 實踐解析-簡單的helloworld

springmvc整合mybatis完整專案示例

maven專案整合springmvc整合mybatis