cookie

    技术2022-07-10  131

    父类工程:pom.xml

    <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency>

    子工程:web.xml

    <filter> <filter-name>cookieFilter</filter-name> <filter-class>com.lym.CookieFilter</filter-class> </filter> <filter-mapping> <filter-name>cookieFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.lym.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>myServlet02</servlet-name> <servlet-class>com.lym.MyServlet02</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet02</servlet-name> <url-pattern>/myServlet02</url-pattern> </servlet-mapping>

    过滤器:CookieFilter

    import javax.servlet.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import java.io.IOException; /** * @author * @version CookieFilter, v 0.1 2020/6/30 21:25 * @Content */ public class CookieFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init"); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) servletRequest; Cookie[] cookies = req.getCookies(); if(cookies!=null){ for(Cookie c:cookies){ if("lastConWeb".equals(c.getName())){ System.out.println("上次的访问时间为:"+c.getValue()); } } } System.out.println("过滤请求"); filterChain.doFilter(servletRequest,servletResponse); } public void destroy() { System.out.println("销毁"); } }

     

    myServlet:

    import javax.servlet.*; import javax.servlet.descriptor.JspConfigDescriptor; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.*; /** * @author * @version MyServlet, v 0.1 2020/6/30 21:31 * @Content */ public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String sessionID = req.getSession().getId(); Cookie myCookie = new Cookie("myCookies", sessionID); myCookie.setMaxAge(1000); myCookie.setPath("/d/myServlet"); resp.addCookie(myCookie); //设置上次的访问时间 Cookie lastConWeb = new Cookie("lastConWeb", new Date().toString()); lastConWeb.setMaxAge(1800); lastConWeb.setPath("/d/myServlet"); resp.addCookie(lastConWeb); //如果创建和访问都在同一个方法时,则在这次请求时不会获取到数据!!! Cookie[] cookies = req.getCookies(); if(cookies!=null){ for(Cookie c:cookies){ if("lastConWeb".equals(c.getName())){ System.out.println("上次的访问时间为:"+c.getValue()); } } } System.out.println(sessionID); System.out.println("doGet"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req,resp); } }

    myServlet2:

    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 java.io.IOException; /** * @author * @version MyServlet, v 0.1 2020/6/30 21:31 * @Content */ public class MyServlet02 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet02"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req,resp); } }

    接下来启动项目验证:观察cookie在浏览器的请求头和响应头信息。

    Processed: 0.011, SQL: 9