至此已经基本测试成功了,我们稍作完善,让它成为一个更加完整的项目
我们现在重新规划下逻辑
两个页面
一个登录页面
一个欢迎页面
登陆页面输入账号密码,登陆成功的话,跳转登陆成功 欢迎页面
并且,更新用户登录信息以及记录登录日志
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
spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
springmvc整合mybatis完整项目示例
springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
springmvc 项目完整示例08 前台页面以及知识点总结
maven项目整合springmvc整合mybatis