参考文献:http://www.runoob.com/servlet
接上篇文章:https://www.jianshu.com/p/ccfa783aa90b
eclipse创建Servlet实例
cookie实列
①通过 Servlet 创建Cookie
在自动创建的
HelloServlet.java
的doGet()函数
中添加1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Cookie name = new Cookie("name",URLEncoder.encode(request.getParameter("name"), "UTF-8")); // 中文转码
Cookie url = new Cookie("url",request.getParameter("url"));
name.setMaxAge(60*60*24); // 为两个 Cookie 设置过期日期为 24 小时后
url.setMaxAge(60*60*24);
response.addCookie( name ); // 在响应头中添加两个 Cookie
response.addCookie( url );
response.setContentType("text/html;charset=UTF-8"); // 设置响应内容类型
PrintWriter out = response.getWriter();
String title = "设置 Cookie 实例";
String docType = "<!DOCTYPE html>\n";
out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<ul>\n" +
" <li><b>站点名:</b>:"
+ request.getParameter("name") + "\n</li>" +
" <li><b>站点 URL:</b>:"
+ request.getParameter("url") + "\n</li>" +
"</ul>\n" +
"</body></html>");
}web.xml
内容同上一篇不变- 通过上篇中的
post.html
发送数据 - 访问
http://localhost:8080/test/post.html
,添加数据并提交可以得到站点名::sheng 站点 URL::www.baidu.com
👂通过 Servlet 读取 Cookie
读取 Cookie,通过调用HttpServletRequest
的 getCookies( )
方法创建一个 javax.servlet.http.Cookie
对象的数组。然后循环遍历数组,并使用getName()
和 getValue()
方法来访问每个 cookie 和关联的值
创建
ReadCookies.java
的doGet()
方法中添加1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Cookie cookie = null;
Cookie[] cookies = null;
cookies = request.getCookies(); // 获取与该域相关的 Cookie 的数组
response.setContentType("text/html;charset=UTF-8"); // 设置响应内容类型
PrintWriter out = response.getWriter();
String title = "Delete Cookie Example";
String docType = "<!DOCTYPE html>\n";
out.println(docType +"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" );
if( cookies != null ){
out.println("<h2>Cookie 名称和值</h2>");
for (int i = 0; i < cookies.length; i++){
cookie = cookies[i];
if((cookie.getName( )).compareTo("name") == 0 ){
cookie.setMaxAge(0);
response.addCookie(cookie);
out.print("已删除的 cookie:" + cookie.getName( ) + "<br/>");
}
out.print("名称:" + cookie.getName( ) + ",");
out.print("值:" + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br/>");
}
}else{
out.println( "<h2 class=\"tutheader\">No Cookie founds</h2>");
}
out.println("</body>");
out.println("</html>");
}web.xml
中添加合适的路径- 通过第一步的创建之后,直接访问
http://localhost:8080/test/ReadCookies
,可以看到创建的cookie值
🌂删除cookie实例
还是第二步的代码,再刷新一下就可以了
Serlet Session实例
①创建session实例
在
ReadCookies.java
的doGet()
方法中添加1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52HttpSession session = request.getSession(true); // 如果不存在 session 会话,则创建一个 session 对象
Date createTime = new Date(session.getCreationTime()); // 获取 session 创建时间
Date lastAccessTime = new Date(session.getLastAccessedTime()); // 获取该网页的最后一次访问时间
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置日期输出的格式
String title = "Servlet Session 实例";
Integer visitCount = new Integer(0);
String visitCountKey = new String("visitCount");
String userIDKey = new String("userID");
String userID = new String("sheng");
if(session.getAttribute(visitCountKey) == null) {
session.setAttribute(visitCountKey, new Integer(0));
}
if (session.isNew()){ // 检查网页上是否有新的访问者
title = "Servlet Session 实例";
session.setAttribute(userIDKey, userID);
} else {
visitCount = (Integer)session.getAttribute(visitCountKey);
visitCount = visitCount + 1;
userID = (String)session.getAttribute(userIDKey);
}
session.setAttribute(visitCountKey, visitCount);
response.setContentType("text/html;charset=UTF-8"); // 设置响应内容类型
PrintWriter out = response.getWriter();
String docType = "<!DOCTYPE html>\n";
out.println(docType +"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<h2 align=\"center\">Session 信息</h2>\n" +
"<table border=\"1\" align=\"center\">\n" +
"<tr bgcolor=\"#949494\">\n" +
" <th>Session 信息</th><th>值</th></tr>\n" +
"<tr>\n" +
" <td>id</td>\n" +
" <td>" + session.getId() + "</td></tr>\n" +
"<tr>\n" +
" <td>创建时间</td>\n" +
" <td>" + df.format(createTime) +
" </td></tr>\n" +
"<tr>\n" +
" <td>最后访问时间</td>\n" +
" <td>" + df.format(lastAccessTime) +
" </td></tr>\n" +
"<tr>\n" +
" <td>用户 ID</td>\n" +
" <td>" + userID +
" </td></tr>\n" +
"<tr>\n" +
" <td>访问统计:</td>\n" +
" <td>" + visitCount + "</td></tr>\n" +
"</table>\n" +
"</body></html>");web.xml
内容同上一篇不变- 访问
http://localhost:8080/test/ReadCookies
可看到session数据
👂删除session实例
- 移除一个特定的属性:调用
public void removeAttribute(String name)
方法来删除与特定的键相关联的值。 - 删除整个 session 会话:调用
public void invalidate()
方法来丢弃整个 session 会话。 - 设置 session 会话过期时间:调用
public void setMaxInactiveInterval(int interval)
方法来单独设置 session 会话超时。 - 注销用户:如果使用的是支持 servlet 2.4 的服务器,调用 logout 来注销 Web 服务器的客户端,并把属于所有用户的所有 session 会话设置为无效。
- web.xml 配置:如果使用的是 Tomcat,还可以在
web.xml
文件中配置 session 会话超时,如下所示:1
2
3<session-config>
<session-timeout>15</session-timeout>
</session-config>
网页重定向
在
HelloServlet.java
的doGet()
方法中添加1
2
3
4response.setContentType("text/html;charset=UTF-8"); // 设置响应内容类型
String site = new String("http://www.baidu.com"); // 要重定向的新位置
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);访问
http://localhost:8080/test/HellloServlet
跳转到百度界面
数据库的实例这里就不在写了,以前整理过mybatis数据库的增删改查,有兴趣的可以看一下