李思贤:今天学习了页面的登录 ,生命周期,定时跳转, 登录数记录;
一:页面登录:
在servlet中 1接收从登录页面传来的数据
2封装对象 封装成一个user对象
3调用业务层 调用UserService中login方法(自己写),调用UserDao中查询,
返回一个对象
4跳转:判断对象是否存在,跳转
二:Servlet生命周期:
创建init执行:用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.
Service执行:任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.
关闭Destroy执行:当项目从服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
三:跳转计时的那个(5,4,3,2,1):是先跳转到一个界面
response.setStatus(302);
response.setHeader("Location", "/Day0602/Test-login/success.html");
再读秒,调到首页
<meta http-equiv="Refresh" content="5;/Day0602/Test-login" />
<script type="text/javascript">
var time = 5;
window.onload = function() {
setInterval('timechange()', 1000);
}
function timechange() {
time--;
document.getElementById("s1").innerHTML = time;
}
<body>
<h1>登录成功</h1>
<h3>
页面将在<span id="s1">5</span>秒回跳转
</h3
</body>
四:记录成功登陆人数
首先要了解ServletContext的用法;
在web.xml中设置 <load-on-startup>3</load-on-startup>
在Servlet中重写
@Override
public void init() throws ServletException {
int count = 0;
this.getServletContext().setAttribute("count", count);
}
.........
if (existUser == null) {
response.getWriter().println("用户名或密码错误");
} else {
int count = (int) this.getServletContext()
.getAttribute("count");
count++;
this.getServletContext().setAttribute("count", count);
response.getWriter().println("登录成功");
response.getWriter().println("5秒钟后跳转");
response.setHeader("Refresh", "5;url=/Day0602/countDemo1");
在跳转页面countDemo1中在页面上打印:
int count = (int)this.getServletContext().getAttribute("count");
response.getWriter().println("你是第"+count+"位登录成功得人"); |