Servlet中cookies例子
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>办卡页面</title>
<script type="application/javascript">
function addParamaters() {
//参数中加时间戳或随机数,防止浏览器缓存GET请求
// document.getElementById("times").value = new Date().valueOf();
//返回 1 到 100 之间的随机数
document.getElementById("times").value = Math.floor((Math.random() * 100) + 1);
}
</script>
</head>
<body onload="addParamaters();">
<center>
<font style="color:red;font-size: 40px;">新会员申请开卡</font>
<form action="/myWeb/one">
<table border="1">
<tr>
<td>用户名</td>
<td><input type="text" name="userName"/></td>
</tr>
<tr>
<td>预存金额</td>
<td><input type="text" name="money"/><input type="hidden" id="times" name="times" value=""/></td>
</tr>
<tr>
<td><input type="submit" value="申请开卡"/></td>
<td><input type="reset" /></td>
</tr>
</table>
</form>
</center>
</body>
</html>
OneServlet.java
public class OneServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("OneServlet start running...");
String userName,money;
//1.调用请求对象读取【请求头】参数信息
userName = request.getParameter("userName");
money = request.getParameter("money");
//2.开卡
Cookie card1 = new Cookie("userName",userName);
Cookie card2 = new Cookie("money",money);
//3.设置cookie存储在硬盘1分钟,不受浏览器关闭影响
card1.setMaxAge(60);
//4.发卡,将Cookie写入到响应头交给浏览器
response.addCookie(card1);
response.addCookie(card2);
//5.响应头中设置浏览器不缓存GET请求(max-age=0 缓存0s,no-store也可以)
// response.setHeader( "Cache-Control" , "max-age=0");
// response.setHeader( "Cache-Control" , "no-store");
//6.通知浏览器将【点餐页面】内容写入到响应体交给浏览器(请求转发)
request.getRequestDispatcher("index_2.html").forward(request,response);
System.out.println("OneServlet over running...");
}
}
index_2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>点餐页面</title>
</head>
<body>
<center>
<font style="color: red;font-size: 40px;">点餐页面</font>
<form action="/myWeb/two">
食物类型:<br/>
<input type="radio" name="food" value="饺子"/>饺子(30元)<br/>
<input type="radio" name="food" value="面条"/>面条(20元)<br/>
<input type="radio" name="food" value="盖饭"/>盖饭(15元)<br/>
<input type="submit" value="划卡消费"/>
</form>
</center>
</body>
</html>
TwoServlet.java
public class TwoServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int jzMoney = 30;
int gfMoney = 15;
int mtMoney = 20;
String food;
String userName = null;
int money = 0;
int xfMoney = 0;
int balance = 0;
Cookie newCard = null;
Cookie cookieArray[];
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//1.读取请求头参数信息,得到用户点餐食物类型
food = request.getParameter("food");
//2.读取请求中的cookie
cookieArray = request.getCookies();
//3.刷卡消费
for (Cookie card : cookieArray){
String key = card.getName();
String value = card.getValue();
if("userName".equals(key)){
userName = value;
}else{
money = Integer.parseInt(value);
if("饺子".equals(food)){
if(jzMoney > money){
out.print("用户 "+userName + " 余额不足,请充值,当前余额 "+money);
}else{
newCard = new Cookie("money",(money-jzMoney)+"");
xfMoney = jzMoney;
balance = money-jzMoney;
}
}else if("面条".equals(food)){
if(mtMoney > money){
out.print("用户 "+userName + " 余额不足,请充值,当前余额 "+money);
}else{
newCard = new Cookie("money",(money-mtMoney)+"");
xfMoney = mtMoney;
balance = money-mtMoney;
}
}else if("盖饭".equals(food)){
if(gfMoney > money){
out.print("用户 "+userName + " 余额不足,请充值,当前余额 "+money);
}else{
newCard = new Cookie("money",(money-gfMoney)+"");
xfMoney = gfMoney;
balance = money-gfMoney;
}
}
}
}
//4.将会员卡反还给用户(复写Cookie)
newCard.setMaxAge(60);
response.addCookie(newCard);
//5.将消费记录写入到响应体
out.print("用户 "+userName+" 购买【"+food+"】1份"+" 本次消费 "+xfMoney+" 余额 "+balance);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>OneServlet</servlet-name>
<servlet-class>controller.OneServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>TwoServlet</servlet-name>
<servlet-class>controller.TwoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TwoServlet</servlet-name>
<url-pattern>/two</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OneServlet</servlet-name>
<url-pattern>/one</url-pattern>
</servlet-mapping>
</web-app>