`
jallay
  • 浏览: 43826 次
  • 性别: 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的架构与生命周期

    此外,现代IDE如Eclipse和IntelliJ IDEA提供了强大的工具支持,可以在调试时查看Servlet的生命周期状态,帮助开发者更有效地调试和优化代码。 在实际开发中,利用Maven或Gradle等构建工具,可以方便地管理和依赖...

    servlet聊天小程序

    这样可以追踪程序运行状态,定位潜在的问题。 综上所述,"servlet聊天小程序"的实现涉及了Java Servlet技术、HTTP协议、多线程编程、会话管理、并发控制和日志记录等多个重要知识点。理解并掌握这些技术,对于开发...

    servlet和jsp学习指南

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

    Servlet请求响应的特殊处理.rar

    - 会话追踪:除了cookies,Servlet还可以使用URL重写和隐藏表单字段进行会话追踪,以应对客户端禁用cookie的情况。 3. **多线程问题**: - Servlet容器(如Tomcat)为每个请求创建一个单独的线程,因此Servlet...

    servlet和jsp学习指南pdf

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

    servlet 监听器范例

    在这个“servlet 监听器范例”中,我们主要关注的是`HttpSessionListener`,因为它是追踪在线用户的关键。 要创建一个监听器,你需要实现`javax.servlet.HttpSessionListener`接口,并重写它的两个方法:`...

    java-servlet物流管理-成功.zip

    在物流系统中,JSP可以用来生成物流追踪页面,其中包含了HTML、CSS和嵌入的Java代码。Servlet处理请求后,可以通过RequestDispatcher将控制权传递给JSP,由JSP负责渲染页面。 5. **会话管理** 在物流管理中,用户...

    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的会话跟踪理解会话跟踪原理

    在基于Servlet的Web开发中,会话跟踪是一个关键的概念,它允许服务器在多个HTTP请求之间保持用户的状态。HTTP协议本身是无状态的,这意味着服务器不会记住任何特定客户端的连续请求。为了解决这个问题,Web开发者...

    servlet实例项目

    日报管理通常涉及创建、查看、编辑和删除日报报告的功能,这对于团队协作和工作追踪至关重要。 该项目的前端界面采用了Bootstrap框架,这是一个流行的开源CSS框架,提供了丰富的预设样式和组件,可以快速构建响应式...

    java实现的servlet工程源码(eclipse)

    10. **调试与日志**:Eclipse提供了强大的调试工具,可以设置断点,查看变量状态,追踪代码执行流程。同时,使用`java.util.logging`或log4j等日志框架可以帮助开发者记录应用运行过程中的信息。 在这个提供的...

    jsp+servlet聊天源码

    - 开发者可以使用IDE(如Eclipse或IntelliJ IDEA)进行源码调试,查看服务器日志来追踪错误。 - 使用单元测试框架(如JUnit)对单独的Servlet或JSP组件进行测试,确保功能正确性。 通过分析和学习这个【jsp+...

    Servlet+jstl标签模拟购物车(书本订购)

    在这个项目中,Servlet将扮演核心角色,负责处理用户的订购请求,更新购物车状态,以及与数据库进行数据交换。 JSTL则是一个用于JSP页面的标准标签库,它提供了一套标准的标签来简化JSP开发,如条件语句、循环、XML...

    Servlet+IO的一个简单的模拟购物车程序

    例如,使用FileInputStream和FileOutputStream进行文件读写,或者使用ObjectInputStream和ObjectOutputStream实现对象的序列化和反序列化,以便持久化购物车状态。 3. **Servlet分层模式**: 分层设计是软件工程中的...

    servlet过滤器技术实例,

    1. **安全控制**:验证用户登录状态,防止未授权访问。 2. **数据处理**:如字符编码转换,确保请求和响应的数据格式一致。 3. **性能监控**:记录请求响应时间,帮助优化性能。 4. **日志记录**:记录用户的操作,...

    jsp+servlet实现的CRM管理系统

    3. 销售订单模块:记录和追踪销售过程,包括订单创建、状态更新、订单查询等,可能涉及与数据库的交互。 4. 市场营销模块:可能包括邮件营销、活动管理等功能,涉及数据统计和分析。 5. 报表与统计模块:生成各类...

    基于JSP/Servlet的公交管理系统

    2. **车辆管理**:记录每辆公交车的车牌号、所属线路等信息,以便追踪车辆的实时位置和状态。 3. **时间表管理**:设置公交的发车时间和间隔,方便乘客规划行程。Servlet负责计算并更新公交时刻表。 4. **查询功能...

    servlet开发的BBS论坛源码

    同时,通过日志记录程序运行过程中的关键信息,有助于追踪系统运行状况。 通过这个BBS论坛项目,我们可以学习到如何结合Servlet、JDBC和JSP构建一个完整的Web应用,并理解这些技术在实际项目中的运用,同时也可以...

    网上物流管理系统的设计与实现 (Servlet+Jsp+JavaBean).zip

    在本项目中,JSP用于生成动态网页,展示物流信息,如订单状态、货物追踪等。JSP中的Java代码通过脚本元素和声明元素进行编写,通过JSP编译器转化为Servlet执行。 3. **JavaBean**:JavaBean是符合JavaBeans规范的...

Global site tag (gtag.js) - Google Analytics