`
jallay
  • 浏览: 43188 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Servlet状态追踪

阅读更多
1:问题的提出:如何让只有登录的用户才能访问某些网页以及如何判断登录。
2:解决上述问题的方案有:
   1)通过Cookie方式来实现
   2)通过Session方式来实现

  Cookie实现方式:
    
    Cookie定义:  Cookie是一小块可以嵌入HTTP请求和响应的数据。它在服务器上产生,并作为响应头域的一部分返回给客户。浏览器在收到有Cookie的响应后,会把Cookie的内容以"关键字/值"的形式写入到一个专为存放Cookie的文本文件中。浏览器会把Cookie的信息与请求发送给服务器,这样服务器就可以再次读取Cookie中存放的数据了。Cookie可以对有效期进行设置,浏览器不会把过期的Cookie发送给服务器。
  
  步骤:1)创建一个Cookie对象;
        2)用户登录之后自动将其该Cookie对象加到服务器端去
        3)用户再次访问的时候,服务器判断该该特定的Cookie存不存在,如果不存在,则要求用户重新登录,如果存在,则可以跳过登录的界面。
  登陆界面
package testParameter;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TableP extends HttpServlet{

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=gb2312");
		PrintWriter out=response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("<form action='/JSP/tabletest' method='post'>");
		out.println("<table align='center'>");
		
		out.println("<tr>");
		out.println("<td>");
		out.println("username:");
		out.println("</td>");
		out.println("<td>");
		out.println("<input type='text' name='name'>");
		out.println("</td>");
		out.println("</tr>");
		
		out.println("<tr>");
		out.println("<td>");
		out.println("password:");
		out.println("</td>");
		out.println("<td>");
		out.println("<input type='password' name='pwd'>");
		out.println("</td>");
		out.println("</tr>");
		
		out.println("<tr >");
		out.println("<td colspan='2'>");
		out.println("<input type='submit' value='提交'>");
		out.println("</td>");
		out.println("</tr>");
		
		out.println("</table>");
		out.println("</form>");
		out.println("</body>");
		out.println("</html>");	
		out.flush();
	}
}

验证界面:
package testParameter;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetTableP extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
	
		String username="aaa";
		String userpwd="bbb";
		
		String name=req.getParameter("name");
		String pwd=req.getParameter("pwd");
		System.out.println(name);
		System.out.println(pwd);
	    if(username.equals(name)&&userpwd.equals(pwd)){
	    	Cookie cookie=new Cookie("testCookie","userid");
	    	cookie.setMaxAge(15);
	    	resp.addCookie(cookie);
	    	req.getRequestDispatcher("/data").forward(req, resp);
	    }else{
	    	req.getRequestDispatcher("/error").forward(req, resp);
	    }
	}
	
}


cookie存在,则可以直接登录界面
package testParameter;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DataTest extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html;charset=gb2312");
		PrintWriter out = response.getWriter();
		Boolean bool = false; // 判断是否有Cookie存在

		Cookie[] cookies = request.getCookies();

		if (cookies != null) {
			for (Cookie cookie : cookies) {
				if (cookie.getName().equals("testCookie")){
					bool = true;
					break;
				}
			}
		} else {
System.out.println("==========================error!");
			request.setAttribute("error", "information");
			request.getRequestDispatcher("/error").forward(request, response);
			return;
		}

		if (bool) {
			out.println("<html>");
			out.println("<body>");
			out.println("cookie 成功");
			out.println("</body>");
			out.println("</html>");
		}
		out.flush();
	}

}



分享到:
评论

相关推荐

    servlet和jsp学习指南

    第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:ExpressionLanguage;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    servlet和jsp学习指南pdf

    第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    servlet和jsp学习指南_pdf.rar

    第2章讨论session追踪,以及保持状态的4种技术;第3章和第4章系统讲解jsp的语法以及jsp中的重要特性之一:expression language;第5~7章分别阐述jstl中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    Servlet和Jsp学习指南(带详细书签)

    第2章讨论session追踪,以及保持状态的4种技术;第3章和第4章系统讲解jsp的语法以及jsp中的重要特性之一:expression language;第5~7章分别阐述jstl中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    Servlet和jsp学习指南

    第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    Servle和JSP学习指南,完整扫描版

    第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    servet&jsp;学习指南

    第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    java_jsp项目源码_乐趣大型购物系统 v1.1(+servlet+mysql).rar

    乐趣大型购物系统 v1.1 是一个基于 Java JSP、Servlet 和 MySQL 技术的先进电子商务平台。该系统旨在为企业和用户提供一个高效、稳定且安全的在线购物环境。它支持多种商品类型,包括实体商品和数字产品,满足了现代...

    Servle和JSP学习指南

    第2章讨论Session追踪,以及保持状态的4种技术;第3章和第4章系统讲解JSP的语法以及JSP中的重要特性之一:Expression Language;第5~7章分别阐述JSTL中最重要的类库、标签的具体编写方法和标签文件;第8~10章讨论...

    java web基于servlet+jdbc+mysql网上商城系统手机商城系统sql数据库脚本毕设项目源码

    6. 订单管理:用户可以查看已下过的所有订单,并可以追踪订单的物流状态。用户还可以取消未发货的订单或申请退货。 以上是手机商城系统的一些主要功能,可以根据实际需要进行适当的扩展和修改。希望对你的毕设项目...

    javaweb物流配货项目源码+毕业设计

    1. 增加了货物追踪功能,可以实时查询货物的状态和位置; 2. 优化了配送路线规划算法,提高了物流配送的效率; 3. 增加了后台管理系统,可以方便地对货物和配送路线进行管理; 4. 优化了前端界面,提高了用户体验。 ...

    基于javaWeb实现的物资管理系统项目

    项目采用了MVC架构,使用Servlet作为控制器处理用户请求,页面展示采用JSP,数据交互通过JavaBean实现。数据库采用关系型数据库(如MySQL)存储物资信息、订单信息等数据。 系统还具有权限管理功能,不同用户拥有...

Global site tag (gtag.js) - Google Analytics