`

Session的使用

 
阅读更多

1,网上商城中的购物车

2,保存登录用户的信息

3,将某些数据放入到Session中,供同一个用户的各个页面使用

4,防止用户非法登录到某个页面

 

(1)LoginCl.java

package com.dtg.controller;

import java.io.IOException;
import java.util.ArrayList;

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

import com.dtg.model.User;
import com.dtg.model.UserCl;

public class LoginServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * 把loginCl.jsp 页面实现的操作,转移到它本应该所在的位置上,就是控制器Servlet
		 * 
		 */
		String id = request.getParameter("id");
		String passw = request.getParameter("passw");
		System.out.println("这是Servlet控制器!!!非常牛逼");
		int pageNow = 1;//当前页
//		int pageSize = 3;//页大小
		int pageCount = 0;//页数
//		int rowCount = 0;//总记录数
		UserCl userCl = new UserCl();
		if (userCl.checkUser(id, passw)) {
			// 用户合法
			/**
			 * sendRedirect “转向” 效率不过,很多软件公司都不适用这个方法,而是使用转发(重定向)
			 * jsp:forward 服务器请求资源(运送)
			 */
			// response.sendRedirect("login_success.jsp");
			
			/**
			 * 在跳转到login_succss.jsp 之前,先把数据准备好 
			 */
//			把用户信息存入session中
			request.getSession().setAttribute("id", id);
			request.getSession().setAttribute("passw", passw);
			
			ArrayList<User> al = userCl.getUserByPage(pageNow);
			pageCount = userCl.getPageCount();
//			将al和pageCount,pageNow放入request中
			request.setAttribute("result", al);
			request.setAttribute("pageCount", pageCount+"");
			request.setAttribute("pageNow", "1");
			
			request.getRequestDispatcher("login_success.jsp").forward(request,
					response);
		} else {
//			 用户不合法
			request.getRequestDispatcher("login_failure.jsp").forward(request,
					response);
		}

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * 合二为一
		 * post方法或者get方法都能搞定
		 */
		this.doGet(request, response);

	}

}

 

(2)login_success.jsp

<h2>
欢迎
<font color="red"><%=(String)session.getAttribute("id")%></font>光临
</h2>

 (3)login_success.jsp

</head>
	<body>
		<%
			String id = (String)session.getAttribute("id");
			if(id==null){
			//返回登陆界面(目前学过的内置对象response,request,out,session)
				response.sendRedirect("/WEB-INF/dtg/login.jsp?err=1");
				return ;
			}
		 %>
		<center>
			<h1> 
				登陆成功 
			</h1>
			<h2>
				欢迎
				<font color="red"><%=id %></font>光临
			</h2>
			<a href="/jsp1/index.jsp">返回重新登录</a>
			<hr>
			<%
				//接受用户想要显示的页面
				String s_pageNow = (String)request.getAttribute("pageNow");
				
				int pageNow = Integer.parseInt(s_pageNow);
			
				//要显示的数据,用request来取
				ArrayList<User> al = (ArrayList<User>)request.getAttribute("result");
				
				//	object -->String -->int
				
				String s_pageCount = (String)request.getAttribute("pageCount");
				int pageCount = Integer.parseInt(s_pageCount);
				
				//用表格显示
				%>
					<table border="1">
							<tr><td>userId</td><td>ID</td><td>PASSWORD</td><td>AGE</td><td>SEX</td></tr>
							<%
								for(int i=0;i<al.size();i++){
									User user = (User)al.get(i);
									%>
										<tr><td><%=user.getUserId() %></td><td><%=user.getId() %></td>
										<td><%=user.getPassword() %></td>
										<td><%=user.getAge() %></td><td><%=user.getSex() %></td></tr>
									<%
								}
							 %>
						</table>
				<%
				//显示超链接
				if(pageNow != 1){
						out.print("<a href=UserServlet?pageNow="+(pageNow-1)+" >上一页</a>");
					}
				
				if(pageNow > 6 && pageNow <= (pageCount-4)){
					for(int i=pageNow-5;i<=pageNow+4;i++){
						out.println("<a href=UserServlet?pageNow="+i+">["+i+"]</a>");
					}
				}else if(pageNow >(pageCount-4) ){
					for(int i=pageCount-9;i<=pageCount;i++){
						out.println("<a href=UserServlet?pageNow="+i+">["+i+"]</a>");
					}
				}else{
					for(int i=1;i<=10;i++){
				//要是pageCount > 10  则不显示全部,只显示前10页的超链接
				//for(int i=1;i<=pageCount;i++)
					out.println("<a href=UserServlet?pageNow="+i+">["+i+"]</a>");
					}
				}
				
				if(pageNow != pageCount){
					out.print("<a href=UserServlet?pageNow="+(pageNow+1)+">下一页</a>");
				}
				
			%>
		</center>

	</body>
</html>

 

(4) login.jsp

	</head>

	<body>
		<center>
		<%
			String err = (String)request.getParameter("err");
			if(err!=null){
				out.println("<font color=red>用户没有正确登陆,请重新登陆!</font>");
			}
		 %>
		<h1>登陆界面</h1>
		<hr>
		<form action="LoginServlet" method="post">
			用户名:
			<input type="text" name="id" />
			<br>
			密&nbsp;&nbsp;码:
			<input type="password" name="passw" />
			<br>
			<input type="submit" value="提交" />
			<input type="reset" value="重置" />
			<hr>
		</form>
		</center>
	</body>
</html>

 

 

分享到:
评论

相关推荐

    jsp中session使用方法

    ### jsp中session使用方法详解 #### 一、引言 在Web开发中,会话管理是一项非常重要的功能,特别是对于需要保持用户状态的应用程序来说更是如此。在Java Web开发中,`HttpSession`接口提供了在多页面请求之间保存...

    session使用方法

    session具体使用方法,资源来自网络,如有问题,请及时与本人联系。

    jsp中session使用方法.docx

    ### JSP中Session使用方法详解 #### 一、引言 在Web开发中,会话管理是一项非常重要的功能,特别是对于需要保持用户状态的应用程序来说更是如此。在Java Web开发中,`HttpSession`接口提供了会话管理的功能,它是...

    session的使用

    五、JSP中的Session使用 在JSP中,可以使用内置对象`session`来直接操作Session。例如: ```jsp session.setAttribute("username", "John Doe"); // 设置Session属性 String username = (String) session....

    tomcat集群基于redis共享session使用到的jar包

    tomcat集群基于redis共享session使用到的所有jar包,放到tomcat的lib下即可使用 apache-tomcat-7.0.56+nginx-1.8.0+redis-3.0.6集群部署所需JAR包,session共享 tomcat-redis-session-manager1.2.jar jedis-2.6.2....

    Asp.Net从零开始3(Session使用)

    ### ASP.NET Session 使用详解 #### 一、Session 概述 在 Web 开发中,由于 HTTP 协议本身是无状态的,这意味着每次客户端发送请求到服务器时都是独立且不携带之前任何交互的信息。为了实现对用户的跟踪以及保存...

    php session使用初探.pdf

    php session使用初探.pdf

    .net MVC使用Session验证用户登录

    .net MVC使用Session验证用户登录,直接输入URL的页面地址跳转到登陆页 ,必须经过用户登录授权才可以。例如输入:http://localhost:14613/Home/index 由于没有登录将直接跳转到http://localhost:14613/Account/Login...

    Session实例

    - **减少Session使用**:过多的Session存储可能导致服务器内存压力增大,应尽量减少不必要的Session存储,或者采用Cookie、数据库、分布式缓存等其他手段存储用户状态。 7. **Session与Cookie的区别** - Session...

    .net core 使用SESSION 文档

    总结来说,ASP.NET Core中的Session使用需要额外的配置步骤,包括添加NuGet包、配置服务和中间件。同时,通过`ISession`接口,我们可以方便地在控制器和依赖注入组件中存取Session数据,甚至存储和检索复杂对象。...

    Jsp内置对象session总结

    2. Session 使用 Cookie 机制,若 Cookie 被禁用,则 Session 也无法使用。 Session 对象是 JSP 中的一个重要组件,用于管理客户端与服务器端之间的会话期。通过 Session 对象,服务器可以记录客户端的状态,实现...

    ssm项目session使用及其作用域问题

    ssm项目session使用及其作用域问题 一、SSM项目Session使用 SSM项目Session使用是指在SSM项目中使用Session机制来存储用户登录信息。Session是存在服务器的一种缓存机制,可以验证用户是否已经登录过了。在SSM项目...

    JSP游戏网站 JSP网游聊天室application session的使用

    - 过多的session数据会消耗服务器资源,因此应尽量减少不必要的session使用,特别是对于大量并发用户的游戏网站。 - 对于应用范围的数据,`application`虽然方便,但过多的数据可能导致内存泄漏,需定期清理或优化...

    spring session实现session共享

    2. **配置存储后端**: 配置Spring Session以使用特定的存储后端,例如Redis,需要在配置类中配置`RedisSessionFactory`和`RedisHttpSessionConfiguration`。 3. **注册SessionRegistry**: 在Spring配置中注册`...

    IIS7 Session的方法

    7. **优化Session使用** - 避免大量数据存储在Session中,以免增加服务器内存负担。 - 使用绝对URL来防止Session ID被跨域窃取。 - 考虑使用ViewState、Cookie或其他技术替代Session,视场景选择最合适的存储方式...

    Session技术

    JSP中的Session使用 在JSP中,我们可以使用`&lt;jsp:useBean&gt;`和`session`隐式对象来操作Session。以下是一些基本操作: - **设置Session属性**:使用`session.setAttribute("key", "value")`方法将数据存入Session...

    ASP.NET Session使用详解

    当我们探讨*** Session使用详解时,首先得明白Session的实质是什么。Session实质上是服务器为每个独立的用户会话分配的一个唯一标识符,通常称为SessionID。每当用户首次连接到服务器时,系统会建立一个新的Session...

    Session登录在线人

    7. **监控与管理**:在生产环境中,对Session的监控也很重要,包括统计在线人数、查看Session使用情况、检测异常Session等,这有助于优化系统性能和及时发现潜在问题。 综上所述,"Session登录在线人"是通过创建和...

Global site tag (gtag.js) - Google Analytics