`

Web开发15:Session在实际项目中的应用

 
阅读更多

写一个登录例子:

用户在login.jsp页面登录,如果用户名是zhangsan,密码为123,并且选择的普通用户,则登录成功。或用户名是lisi,密码为456,且选择的是管理员,则登录成功。如果登录失败,则返回到登录页面,并且在登录页面保留之前输入过的用户名及选择的用户类型。

 

User.java   

package com.test.bean;

public class User {
	private String username;
	private String password;
	private String authority;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getAuthority() {
		return authority;
	}

	public void setAuthority(String authority) {
		this.authority = authority;
	}
}

 

login.jsp 登录页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
  	<%String authority = (String)request.getAttribute("authority"); %>
	<form action="/servletTest/UserLoginServlet" method="post">
		用户名:<input type="text" name="username" value="<%= null == request.getAttribute("username") ? "": request.getAttribute("username")%>"/><br>
		密码:<input type="password" name="password"/><br>
		authority:
		<select name="authority">
			<option value="1" <%= "1".equals(authority)? "selected":""%>>common user</option>
			<option value="2" <%= "2".equals(authority)? "selected":""%>>administrator</option> 
		</select><br>
		<input type="submit" value="submit">
	</form>
  </body>
</html>

 

 

UserLoginServlet.java

package com.test.servlet;

import java.io.IOException;

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

import com.test.bean.User;

public class UserLoginServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String authority = request.getParameter("authority");
		if("1".equals(authority)){
			//登录的是普通用户
			if("zhangsan".equals(username) && "123".equals(password)){
				User user = new User();
				user.setUsername(username);
				user.setPassword(password);
				user.setAuthority(authority);
				HttpSession session = request.getSession();
				session.setAttribute("user", user);
				request.getRequestDispatcher("/session/index.jsp").forward(request, response);
			}else{//登录失败
				request.setAttribute("username", username);
				request.setAttribute("password", password);
				request.setAttribute("authority", authority);
				request.getRequestDispatcher("session/login.jsp").forward(request, response);
			}
		}
		else if("2".equals(authority)){
			//登录的系统管理员
			if("lisi".equals(username) && "456".equals(password)){
				User user = new User();
				user.setUsername(username);
				user.setPassword(password);
				user.setAuthority(authority);
				HttpSession session = request.getSession();
				session.setAttribute("user", user);
				request.getRequestDispatcher("/session/index.jsp").forward(request, response);
			}else{//登录失败
				request.setAttribute("username", username);
				request.setAttribute("password", password);
				request.setAttribute("authority", authority);
				request.getRequestDispatcher("session/login.jsp").forward(request, response);
			}
		}else{
			request.setAttribute("username", username);
			request.setAttribute("password", password);
			request.setAttribute("authority", authority);
			request.getRequestDispatcher("session/login.jsp").forward(request, response);
		}
	}
	
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doGet(req, resp);
	}
}

 

 

以上servlet也可以改为重定向的方式实现:

 

response.sendRedirect("login.jsp?username="+username+"&password="+password);

在login.jsp页面必须改为request.getParameter()来接收servlet转回的username及password。 

 

index.jsp 显示两个链接:query和update,只有管理员才显示update链接

<%@ page language="java" import="com.test.bean.*" pageEncoding="UTF-8"%>
<html>
  <body>
  	<%
  		User user = (User)session.getAttribute("user");
  		if(null == user){
  			response.sendRedirect("login.jsp");
  			return;
  		}
  	 %>
  	<a href="QueryServlet">query</a><br>
  	<!--只有管理员才显示update链接  -->
  	<%if(((User)session.getAttribute("user")).getAuthority().equals("2")){ %>
  		<a href="UpdateServlet">update</a><br>
  	<%} %>
  </body>
</html>

 

QueryServlet.java

package com.test.servlet;

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;
import javax.servlet.http.HttpSession;

public class QueryServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		HttpSession session = request.getSession();
		//如果 session中没有用户,则重定向到登录页面
		if(null == session.getAttribute("user")){
			response.sendRedirect("session/login.jsp");
			return;
		}
		response.getWriter().print("welcome");
	}

}

 

分享到:
评论

相关推荐

    Flask Web开发:基于Python的Web应用开发实战

    **Flask Web开发:基于Python的Web应用开发实战** Flask是Python编程语言中的一个轻量级Web应用程序框架,以其简洁、灵活的特性受到了开发者们的广泛欢迎。它遵循"微框架"理念,允许开发者自由选择如何组织项目和...

    学习《Flask Web开发:基于Python的Web应用开发实战》分享.zip

    《Flask Web开发:基于Python的Web应用开发实战》是一本深入浅出的教程,旨在帮助读者掌握使用Python的Flask框架构建Web应用程序的技术。Flask是一个轻量级的Web服务器网关接口(WSGI)Web应用框架,以其灵活性、...

    《Java Web应用开发:J2EE和Tomcat》教程第二版

    此外,书中的实例和练习将帮助读者理解和掌握Java EE开发的整个流程,从而提升在实际项目中的应用能力。 总之,这本书是Java Web开发者不可或缺的参考资料,无论你是初学者还是有经验的开发者,都能从中获得宝贵的...

    Tomcat 同一服务器上 不同web项目共享session的

    在IT行业中,尤其是在Java Web开发领域,Tomcat服务器是一个广泛使用的应用服务器,它负责处理HTTP请求并托管基于Servlet和JSP的应用程序。当我们在同一台服务器上部署多个Web项目时,有时需要实现不同Web项目之间的...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...

    Java Web应用开发项目教程[聂明][电子教案]

    总的来说,"Java Web应用开发项目教程"是一个全面的学习资源,涵盖了从基础到高级的Java Web开发技术,旨在培养学习者的实际操作能力和问题解决能力。通过聂明老师的电子教案,学习者不仅可以深入理解理论知识,还能...

    一般应用程序中如何处理Web页面的Session问题

    在实际应用中,可以通过定期发送空的Ajax请求到服务器来维持Session的有效性,防止因为长时间无操作而导致的Session过期。这种方式特别适用于那些用户可能会长时间不进行交互的Web应用。 5. **考虑使用Token进行...

    精通JSP-Web开发技术与典型应用

    《精通JSP-Web开发技术与典型应用》的范例代码涵盖了广泛的Web开发知识点,旨在帮助开发者深入理解和熟练掌握JSP技术在实际项目中的运用。JSP(JavaServer Pages)是一种基于Java的动态网页技术,它允许开发者在HTML...

    j2ee实验二:学习使用Session和Cookie

    ### j2ee实验二:学习使用Session和Cookie #### 实验背景与目标 ...这些技能对于从事Web开发工作来说是非常宝贵的。此外,通过实践操作加深了对B/S架构的理解,为将来进一步探索复杂的Web应用程序打下了坚实的基础。

    精通jsp-web开发技术与典型应用

    《精通jsp-web开发技术与典型应用》是一本深入讲解JavaServer Pages (JSP) 技术及其在Web开发中的实际运用的书籍。作者张新曼以其丰富的教学和实践经验,为读者构建了一套全面且实用的学习路径,旨在帮助学生和...

    web应用开发技术(JSP)源码

    在本资源中,"web应用开发技术(JSP)源码" 提供的是与Web应用程序开发相关的源代码,特别是基于JavaServer Pages (JSP) 技术。JSP是一种动态网页开发标准,允许开发者将静态HTML与动态Java代码结合起来,以创建数据...

    4602231《JSP Web应用开发案例教程》(侯玉香)720-9素材与实例.zip

    通过这些案例,学习者可以更好地理解JSP在实际项目中的应用,并提升自己的编程技能。 8. **调试与优化**:学习JSP开发不仅仅是编写代码,还包括错误调试和性能优化。了解如何利用开发工具进行调试,分析日志,以及...

    Web后端开发-使用Session会话跟踪技术,实现用户登录、注销

    在Web后端开发中,会话(Session)跟踪技术是一种常用的方法,用于在客户端与服务器之间维护用户状态,尤其在用户登录和...在实际开发中,应根据项目需求和环境选择合适的Session管理策略,确保系统稳定、安全地运行。

    Java Web应用开发 51 课堂案例-应用Servlet读取Session数据.docx

    在这个Java Web应用开发的课堂案例中,我们关注的是如何在Servlet中读取和处理Session数据。Session是Web应用程序中用来跟踪用户状态的一种机制,特别是在无状态的HTTP协议上。这个案例主要涵盖了以下几个知识点: ...

    Java Web数据库系统应用开发与实例源代码

    通过提供的实例源代码,开发者可以学习到如何在实际项目中整合这些技术,从数据库设计、后端逻辑实现到前端界面展示,从而提升自己的Java Web开发能力。在研究源代码时,注意理解每个类和方法的作用,以及它们之间的...

    PHP Web应用开发教程.rar

    PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源脚本语言,尤其在Web开发领域中占有重要地位。本教程针对的是那些希望通过学习PHP来构建动态、交互式网站的学生或初学者。作为大学教材,这份...

    session的应用

    Session在Web开发中扮演着关键的角色,它是维持用户会话状态的一种机制。当用户打开浏览器访问网站并交互时,Web服务器通过Session来跟踪和管理每个用户的状态信息,比如用户登录状态、购物车内容等。Session的核心...

    web项目集群时共享session方案实践

    在Web开发中,当一个应用程序部署在多个服务器上形成集群时,如何实现多个服务器之间Session的共享成为了一个关键问题。由于Session是存储在单个服务器内存中的,因此默认情况下,不同服务器无法直接访问彼此的...

    Java Web应用开发 25 课堂案例-使用session制作站点计数器.docx

    在Java Web应用开发中,制作站点计数器是一项常见的任务,它可以用来统计网站的访问次数,从而了解...因此,在实际应用中,我们还需要考虑优化策略,例如使用数据库或分布式缓存来存储访问计数,以提高系统的可扩展性。

    java web 开发与应用教材源码

    5. **MVC模式**:在Java Web开发中,Model-View-Controller(MVC)设计模式是一种常见的架构模式,"ch19"、"ch29"等章节可能探讨了如何在实际项目中实现这一模式,使得代码结构清晰,易于维护。 6. **会话管理**:...

Global site tag (gtag.js) - Google Analytics