URL重写和隐藏域仅适合保存无需跨越太多页面的信息。如果需要在多个页面之间传递信息,则以上两种技术实现 成本高昂,因此不得不在每个页面都进行相应的处理。Cookies技术可以实现着一点。 Cookies是一个很少的信息片段,可自动地在浏览器和Web服务器间交互,因此Cookies可存储在多个页面间传递 信息。Cookie作为HTTP header的一部分,其传输由HTTP协议控制,此外,可以控制Cookies的有效时间。浏览 器通常支持每个网站高达20个Cookies。
八大内置对象:(page,request,response,session,application,exception,ServletContext,ServletConfign)
import javax.jws.WebService;
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 java.io.IOException;
import java.io.PrintWriter;
@WebServlet(urlPatterns = "/cookieServl")
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
this.doPost ( request,response );
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType ( "text/html;charset=UTF-8" );
PrintWriter out=response.getWriter ();
for(int i=0;i<3;i++){
Cookie cookie=new Cookie ("cookieKey"+i,"cookieValue"+i);
response.addCookie ( cookie );
cookie=new Cookie ( "PersistentCookirKey"+i,"PersistentCookieValue"+i );//持久化的cookie
cookie.setMaxAge(36000);//设置第二个cookie的存活时间
response.addCookie ( cookie );//把cookie加入response 中
}
out.append ( "<html>" )
.append("<head><title>营营我好喜欢你呀</title></head>")
.append ( "<body>" )
.append ( "用户 :<input type='text' name='营营'/></br>")
.append ( "密码:<input type='password' name='pwd' /></br>" )
.append ( "<h1> 我爱你营营</></br>" )
.append("<a href='showServlet'>去看营营</a>")
.append ( "<input type='submit' value='提交'/>" )
.append ( "<a href= 'ShowServlet'>Go to Show Cookie</a>" )
.append("</body>")
.append ( "</html>" );
}
}
二、Cookie的展示
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 java.io.IOException;
import java.io.PrintWriter;
@WebServlet(urlPatterns = "/ShowServlet")
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost ( request,response );
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 显示 cookie的状态
out.append("<html>")
.append("<head><title>CookieServletDemo</title></head>")
.append("<body>")
.append("<table border='1' align='center'>")
.append("<tr>")
.append("<td>CookieName</td>")
.append("<td>CookieValue</td>");
Cookie[] cookies = request.getCookies();
Cookie cookie = null;
if(cookies != null){
for(int i = 0; i < cookies.length; i++){
cookie = cookies[i];
out.append("<tr>")
.append("<td>'"+cookie.getName()+"'</td>")
.append("<td>'"+cookie.getValue()+"'</td>")
.append("</tr>");
}
}
out.append("</tr>")
.append("</table>")
.append("</body>")
.append("</html>");
}
}