HttpServlet 会话管理(二) (Cookie Session 简单示例)
来源:互联网 发布:胸肌 知乎 编辑:程序博客网 时间:2024/04/29 01:46
本文代码转载自
《Servlet、JSP和Spring MVC初学指南》
Cookie就是简单的键值传送方法,并能设置其过期时间,这里唯一值得注意的是如果要删除一个Cookie方法为设置同名Cookie(response.addCookie(cookie))预先设置过期时间为0即可(cookie.setMaxAge(0))下面是一个使用Cookie设置页面字体的简单示例
package main.ServletStudy;/** * Created by ehang on 2017/2/9. */import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServlet;@WebServlet( name = "PreferenceServlet", urlPatterns = {"/preference"})public class PreferenceServlet extends HttpServlet { private static final long serialVersionUID = 888L; public static final String MENU = "<div style = 'background:#e8e8e8;padding:15px'>" + "<a href = 'cookieClass'>Cookie Class</a> " + "<a href = 'cookieInfo'>Cookie Info</a> " + "<a href = 'preference'>Preference</a></div>"; @Override public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head><title>Preference</title>" + "<style>table{font-size:small;background:NavajoWhite}</style>" + "</head><body>" + MENU + "Please Select the values below:" + "<form method = 'post'>" + "<table>" + "<tr><td>Title Font Size: </td><td><select name = 'titleFontSize'>" + "<option>large</option>" + "<option>x-large</option>" + "<option>xx-large</option>" + "</select></td></tr>" + "<tr><td>Title Style & Weight: </td><td><select name = 'titleStyleAndWeight' multiple>" + "<option>italic</option>" + "<option>bold</option>" + "</select></td></tr>" + "<tr><td>Max, Records in Table: </td><td><select name = 'maxRecords'>" + "<option>5</option>" + "<option>10</option>" + "</select></td></tr>" + "<tr><td rowspan = '2'><input type = 'submit' value = 'Set'></td></tr>" + "</table></form></body></html>"); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{ String maxRecords = request.getParameter("maxRecords"); String[] titleStyleAndWeight = request.getParameterValues("titleStyleAndWeight"); String titleFontSize = request.getParameter("titleFontSize"); response.addCookie(new Cookie("maxRecords", maxRecords)); response.addCookie(new Cookie("titleFontSize", titleFontSize)); Cookie cookie = new Cookie("titleFontWeight", ""); cookie.setMaxAge(0); response.addCookie(cookie); cookie = new Cookie("titleFontStyle", ""); cookie.setMaxAge(0); response.addCookie(cookie); if(titleStyleAndWeight != null){ for(String style: titleStyleAndWeight){ if(style.equals("bold")){ response.addCookie(new Cookie("titleFontWeight", "bold")); }else if(style.equals("italic")){ response.addCookie(new Cookie("titleFontStyle", "italic")); } } } response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head></head><body>" + MENU + "Your preference has been set." + "<br/><br/>Max. Record in Table: " + maxRecords + "<br/>Title Font Size: " + titleFontSize + "<br/>Title Font Style & Weight: "); if(titleStyleAndWeight != null){ writer.println("<ul>"); for(String style:titleStyleAndWeight){ writer.print("<li>" + style + "</li>"); } writer.println("</ul>"); } writer.println("</body></html>"); }}上面是一个生成设置Cookies的示例,下面是两个使用Cookies的示例(分别是数量及字体)
package main.ServletStudy;/** * Created by ehang on 2017/2/9. */import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet( name = "CookieClassServlet", urlPatterns = {"/cookieClass"})public class CookieClassServlet extends HttpServlet { private static final long serialVersionUID = 837369L; private String[] methods = { "clone", "getComment", "getDomain", "getMaxAge", "getName", "getPath", "getSecure", "getValue", "getVersion", "isHttpOnly", "setComment", "setDomain", "setHttpOnly", "setMaxAge", "setPath", "setSecure", "setValue", "setVersion" }; @Override public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{ Cookie[] cookies = request.getCookies(); Cookie maxRecordsCookie = null; if(cookies != null){ for(Cookie cookie: cookies){ if(cookie.getName().equals("maxRecords")){ maxRecordsCookie = cookie; break; } } } int maxRecords = 5; if(maxRecordsCookie != null){ try{ maxRecords = Integer.parseInt(maxRecordsCookie.getValue()); }catch(NumberFormatException e){ } } response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head><title>Cookie Class</title></head>" + PreferenceServlet.MENU + "<div>Here are some of the methods in javax.servlet.http.Cookie<ul>"); for(int i = 0;i < maxRecords;i++){ writer.print("<li>" + methods[i] + "</li>"); } writer.print("</ul></div>" + "<body></body></html>"); }}
package main.ServletStudy;/** * Created by ehang on 2017/2/9. */import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet( name = "CookieInfoServlet", urlPatterns = {"/cookieInfo"})public class CookieInfoServlet extends HttpServlet { private static final long serialVersionUID = 3829L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{ Cookie[] cookies = request.getCookies(); StringBuilder styles = new StringBuilder(); styles.append(".title{"); if(cookies != null){ for(Cookie cookie: cookies){ String name = cookie.getName(); String value = cookie.getValue(); if(name.equals("titleFontSize")){ styles.append("font-size:" + value + ";"); }else if(name.equals("titleFontWeight")){ styles.append("font-weight:" + value + ";"); }else if(name.equals("titleFontStyle")){ styles.append("font-style:" + value + ";"); } } } styles.append("}"); response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head><title>Cookie Info</title><style>" + styles.toString() + "</style></head><body>" + PreferenceServlet.MENU + "<div class='title'>Session Management with Cookies:</div>" + "<div>"); if(cookies == null){ writer.print("No cookies in this HTTP response."); }else{ writer.println("<br/>Cookies in this HTTP response:"); for(Cookie cookie: cookies){ writer.println("<br/>" + cookie.getName() + ":" + cookie.getValue()); } } writer.print("</div></body></html>"); }}
都是进行状态数据传输的方法 Cookie的方法将记录状态的内容放在浏览器能够·看到的地方(Headers)
而session是将实际内容以对象的形式记录于内存中
下面是session的一个简单示例
package SessionStudy;/** * Created by admin on 2017/2/14. */import java.io.IOException;import java.io.PrintWriter;import java.text.NumberFormat;import java.util.ArrayList;import java.util.List;import java.util.Locale;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;@WebServlet( name = "ShoppingCartServlet", urlPatterns = { "/products", "/viewProductDetails", "/addToCart", "/viewCart" })public class ShoppingCartServlet extends HttpServlet { private static final long serialVersionID = -20L; private static final String CART_ATTRIBUTE = "cart"; private List<Product> products = new ArrayList<>(); private NumberFormat currencyForamt = NumberFormat.getCurrencyInstance(Locale.US); @Override public void init()throws ServletException{ products.add(new Product(1, "Bravo 32' HDTV", "Low-cost HDTV from renowned TV manufacturer", 159.95F)); products.add(new Product(2, "Bravo BluRay Player", "High quality stylish BluRay player", 99.95F)); products.add(new Product(3, "Bravo Stereo System", "5 speaker hifi system with iPod player", 129.95F)); products.add(new Product(4, "Bravo iPod player", "An iPod plug-in ", 39.95F)); } @Override public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ String uri = request.getRequestURI(); if (uri.endsWith("/products")){ sendProductList(response); }else if(uri.endsWith("/viewProductDetails")){ sendProductDetails(request, response); }else if(uri.endsWith("viewCart")){ showCart(request, response); } } private void sendProductList(HttpServletResponse response)throws IOException{ response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head><title>Products</title></head><body>" + "<h2>Products</h2>" + "<ul>" ); for(Product product: products){ writer.println("<li>" + product.getName() + "(" + currencyForamt.format(product.getPrice()) + ") ( " + "<a href = 'viewProductDetails?id=" +product.getId() + "'>Details</a> ) </li>"); } writer.println("</ul><a href = 'viewCart'>View Cart</a></body></html>"); } private Product getProduct(int productId){ for(Product product: products){ if(product.getId() == productId){ return product; } } return null; } private void sendProductDetails(HttpServletRequest request, HttpServletResponse response) throws IOException{ response.setContentType("text/html"); PrintWriter writer = response.getWriter(); int productId = 0; try{ productId = Integer.parseInt(request.getParameter("id")); }catch(NumberFormatException e){ } Product product = getProduct(productId); if(product != null){ writer.println("<html><head><title>Product Details</title></head><body><h2>Product Details</h2>" + "<form method = 'post' action = 'addToCart'>" + "<input type = 'hidden' name = 'id' value = '" + productId +"'/>" + "<table>" + "<tr><td>Name:</td><td>" + product.getName() + "</td></tr>" + "<tr><td>Descriptiom:</td><td>" + product.getDescription() + "</td></tr>" + "<tr><td><input name = 'quantity'/></td><td><input type='submit' value = 'Buy'/></td></tr>" + "<tr><td colspan='2'><a href = 'products'>Products List</a></td></tr>" + "</table></form></body></html>"); } else{ writer.println("Mo product found"); } } private void showCart(HttpServletRequest request, HttpServletResponse response)throws IOException{ response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html><head><title>Shopping Cart</title></head><body>" + "<a href = 'products'>Product List</a>"); HttpSession session = request.getSession(); List<ShoppingItem> cart = (List<ShoppingItem>) session.getAttribute(CART_ATTRIBUTE); if(cart != null){ writer.println("<table>" + "<tr><td style = 'width:150px'>Product</td><td style = 'width:150px'>Price</td><td>Amount</td></tr>") ; double total = 0.0; for(ShoppingItem shoppingItem: cart){ Product product = shoppingItem.getProduct(); int quantity = shoppingItem.getQuantity(); if(quantity != 0){ float price = product.getPrice(); writer.println("<tr><td>" + quantity +"</td><td>" + product.getName() + "</td>" + "<td>" + currencyForamt.format(price) + "</td>"); double subtotal = price * quantity; writer.println("<td>" + currencyForamt.format(subtotal) + "</td>" + "</tr>"); total += subtotal; } } writer.println("<tr><td colspan='4' style = 'text-align:right'>" + "Total:" + currencyForamt.format(total) + "</td></tr>"); writer.println( "</table>"); } writer.println( "</body></html>"); } @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ int productId = 0; int quantity = 0; try{ productId = Integer.parseInt(request.getParameter("id")); quantity = Integer.parseInt(request.getParameter("quantity")); }catch(NumberFormatException e){ } Product product = getProduct(productId); if(product != null && quantity >= 0){ ShoppingItem shoppingItem = new ShoppingItem(product, quantity); HttpSession session = request.getSession(); List<ShoppingItem> cart = (List<ShoppingItem>) session.getAttribute(CART_ATTRIBUTE); if(cart == null){ cart = new ArrayList<ShoppingItem>(); session.setAttribute(CART_ATTRIBUTE, cart); } cart.add(shoppingItem); } sendProductList(response); }}
0 0
- HttpServlet 会话管理(二) (Cookie Session 简单示例)
- 会话管理(Cookie、Session)
- HttpServlet 会话管理(一)(URL重写 表单隐藏域 简单示例)
- 会话(cookie session)
- java HttpServlet 之 会话Cookie和Session
- 会话管理 Cookie&session
- 会话管理(session)(二)
- ---会话管理(cookie)
- Web开发之会话管理技术(Cookie、Session)
- java的会话管理:Cookie和Session(转)
- 会话管理(Cookie技术和Session技术)
- 会话(Session和cookie)
- 会话跟踪(Cookie & Session)
- 会话跟踪(Cookie,Session)
- ---会话管理(session)
- 会话管理技术Cookie&Session
- java--会话管理(Cookie Session)
- 会话管理cookie与session
- IO流_转换流InputStreamReader的使用
- 论指针数组与数组指针
- 使用VideoView播放视频
- 【泛型】一个简易的对象间转换的工具类(DO转VO)
- SIA实战(一):SpEL的使用
- HttpServlet 会话管理(二) (Cookie Session 简单示例)
- python 学习网站
- java基本类型
- 容器set与字符操作:UVA - 10815
- Android中IDE、ADT、SDK、JDK、NDK的含义解释
- java + 100以内的素数(质数)
- mysql安装权限问题
- 我的职场-初入职场遇到一帮好兄弟
- API网关Ocelot 使用Polly 处理部分失败问题