Sessions and their session technologies
1. Cookie Objects
Cookies are session technologies that save data during a session to the user's browser so that the browser and server can better interact with the data.
(1) Cookie technology is used to display the last access time of users. When the browser exits, the browser deletes the cookie object
The implementation is as follows:
package cn.com; import java.io.IOException; import java.util.Date; 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; /** * Servlet implementation class LastAccessServlet */ @WebServlet({ "/LastAccessServlet", "/lastAccess" }) public class LastAccessServlet 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.setContentType("text/html;charset=utf-8"); //response.getWriter().append("Served at: ").append(request.getContextPath()); System.out.println("Receive Front End Request"); Cookie[] cookies=request.getCookies(); String lastTime=null; for(int i=0;cookies!=null && i<cookies.length;i++) { String name=cookies[i].getName(); if("lastAccess".equals(name)) { lastTime=cookies[i].getValue(); } } if(lastTime==null) { response.getWriter().print("You are visiting this website for the first time"); } else { response.getWriter().print("Your last visit"+lastTime); } String time=String.format("%tF<tT", new Date()); Cookie cookie=new Cookie("lastAccess",time); cookie.setMaxAge(60*60*24*7); response.addCookie(cookie); } /** * @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); } }
2.Session object:
Cookie technology can save users'information in their browsers and share data under multiple requests. However, if more information is transferred, using Cookie technology will obviously increase the difficulty of server program processing. In this case, Session technology can be used.
Implement shopping carts:
package cn.com; import java.io.Serializable; public class Book implements Serializable{ private static final long serialVersionUIF=1L; private String id; private String name; public Book() { } public Book(String id,String name) { this.id=id; this.name=name; } public String getId() { return id; } public void setId(String id) { this.id= id; } public String getName() { return name; } public void setName(String name) { this.name= name; } } ```Create database impersonation class: ```c package cn.com; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; public class BookDB { private static Map<String,Book> map = new LinkedHashMap<String,Book>(); static{ map.put("1", new Book("1","javaWeb")); map.put("2", new Book("2","jdbc Introduction")); map.put("3", new Book("3","java Basics")); map.put("4", new Book("4","struts frame")); map.put("5", new Book("5","hibernate frame")); } //1. Get all the books public static Collection<Book> getAll(){ return map.values(); } //2. Get a book by map's key, which is the id of the book public static Book getBook(String id){ return map.get(id); } }
Create a class named ListBookServlet that operates by clicking the Purchase link to add books to the shopping cart;
package cn.com; import java.io.IOException; import java.io.PrintWriter; import java.util.Collection; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ListBookServlet */ @WebServlet({ "/ListBookServlet", "/listBook" }) public class ListBookServlet 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.setContentType("text/html;charset=utf-8"); //response.getWriter().append("Served at: ").append(request.getContextPath()); PrintWriter out=response.getWriter(); Collection<Book> books=BookDB.getAll(); out.print("The following are all the books sold on this website:"+"<br/><br/>"); for(Book b:books) { String name=b.getName(); String id=b.getId(); String url="<a href='/hello3/purcharse?id="+id+"'>Click to buy</a>"; out.print("Book name:"+name+" "+url+"<br/><br/>"); } } /** * @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); } }
The effect is as follows:
Create a servlet class named PurchaseServlet that is saved to the Session object
package cn.com; import java.io.IOException; import java.util.ArrayList; import java.util.List; 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; import javax.servlet.http.HttpSession; /** * Servlet implementation class PurchaseServlet */ @WebServlet({ "/PurchaseServlet", "/purchase" }) public class PurchaseServlet 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.setContentType("text/html;charset=utf-8"); //response.getWriter().append("Served at: ").append(request.getContextPath()); String id=request.getParameter("id"); if(id==null) { String url="/hello3/ListBookServlet"; response.sendRedirect(url); return; } Book book=BookDB.getBook(id); HttpSession session=request.getSession(); List<Book> cart=(List) session.getAttribute("cart"); if(cart==null) { cart=new ArrayList<Book>(); session.setAttribute("cart", cart); } cart.add(book); Cookie cookie=new Cookie("JSESSIONID",session.getId()); cookie.setMaxAge(60*30); cookie.setPath("/hello3"); response.addCookie(cookie); response.sendRedirect("/hello3/CartServlet"); } /** * @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); } }
Create a Servlet class named CartServlet that displays a list of user bazaar books:
package cn.com; import java.io.IOException; import java.io.PrintWriter; import java.util.List; 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; /** * Servlet implementation class CartServlet */ @WebServlet({ "/CartServlet", "/cart" }) public class CartServlet 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.setContentType("text/html;charset=utf-8"); //response.getWriter().append("Served at: ").append(request.getContextPath()); PrintWriter out=response.getWriter(); List<Book> cart=null; HttpSession session=request.getSession(false); boolean cartFlag=true; if(session==null) { cartFlag=false; } else { cart=(List) session.getAttribute("cart"); if(cart==null) { cartFlag=false; } } if(!cartFlag) { out.write("Sorry, there are no books in your shopping cart. Please buy them!"); } else { out.write("Purchase books as follows:"+"<br/>"); for(Book book:cart) { out.write("Books purchased:"+book.getName()+"<br/>"); } } } /** * @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); } }
Choosing a book achieves the following results:
3. Use session technology to realize user login
1. Create classes for user encapsulated information classes
2. Create an indexServlet class to display the first page of the website and the login information. In order to determine whether the user is logged in, the session object that saves the user information is obtained when the class is implemented.
3. Create a loginservlet class that displays pages where the user successfully logged in. If the logon is successful, jump to the home page of the site, otherwise the logon fails
4. logoutservlet is written to complete user logout function. When the user clicks "Exit", this class removes the user information of session object and returns to the first page of the website.
5. Create an html file to fill in user login form information