cookie获取用户登录时间
原理:方法request中getcookie()使服务器获得浏览器的所有cookie,显示在页面,response中的方法add.coookie()将服务器cookie(本次浏览记录)写回浏览器。由于getcookie获取的是所有网页的cookie,所以还需判断数组中是否有指定网站的cookie
第一步:写servletgonfig.java主文件
(这里把前几天学的也放进去了,cookie位置有注释)
package servletsummer;
import java.io.IOException;
import java.util.Date;//
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cookiee.utiles;
/**
* Servlet implementation class demooo
*/
public class servletgonfig extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
ServletConfig config= this.getServletConfig();
String username =config.getInitParameter("username");
String password=config.getInitParameter("password");
System.out.println(username+" "+password);
//获得servletname
String servletname =config.getServletName();
System.out.print(servletname);
//servletcontext(获取文件类型)
ServletContext servletContext= this.getServletContext();
String minetype=servletContext.getMimeType("aaa.jpg");
System.out.print( minetype);
//context获得全局初始化参数
String hhhh=servletContext.getInitParameter("password22");
System.out.println("password22"+hhhh);
//重定向 定时刷新
// response.getWriter().println("after 5s gointo baidu");
// response.setHeader("Refresh","5;url=http://www.baidu.com");
//request获取请求方式和ip地址
System.out.println("ip:"+request.getRemoteAddr());
System.out.println("method"+request.getMethod());
System.out.println("请求参数:" +request.getQueryString());
//request接受表单信息
String usern=request.getParameter("username");
System.out.println(usern);
String passw=request.getParameter("password");
System.out.println(passw);
//cookiee
//判断是否是第一次访问
Cookie[] cookies =request.getCookies();
Cookie cookie=utiles.findCookie(cookies, "lastVisit");
if(cookie==null) {
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
response.getWriter().println("<h1>第一次访问你好</h1>");
response.getWriter().println("abc");
}else {
//显示上一次访问时间
String value= cookie.getValue();
response.setCharacterEncoding("utf-8");
response.getWriter().println(value);
response.getWriter().println("abcd");
}
//记录访问时间
Date d = new Date();
Cookie c=new Cookie("lastVisit", d.toLocaleString());//l ;
response.addCookie(c);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
新建一个包写utiles.java
package cookiee;
//查找指定cookie
import javax.servlet.http.Cookie;
public class utiles {
public static Cookie findCookie(Cookie[] cookies,String name) {
if(cookies==null) {
return null;
}else {
for(Cookie cookie :cookies) {
if(name.equals(cookie.getName())) {
return cookie;
}
}
return null;
}
}
}
两个位置
第三步:用浏览器测试
问题一:奇怪的是,我这里用正常的浏览器即使设置了utf-8字符集,中文也还是乱码,使用的eclipse绿色运行小箭头弹出eclipse自带的浏览器才能正常输出
问题二:Date d = new Date();这一行会报错,解决方法是加一行import java.util.Date;导一个包