如何实现JSP页面的访问控制
展开全部
1、概念和定义
session对象:
session对象用来存储有关用户会话的所有信息,一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程。session是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息。
application对象:
application类似于系统的“全局变量”,用于实现用户之间的数据共享。
2、流程和步骤
实现网站登录功能的步骤
(1)创建静态登录页面,并指定表单提交由登录处理页面进行处理。
(2)创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,在session中保存该用户的登录信息,并且跳转到新闻发布系统的首页面,如果用户未注册,则仍然回到登录页面。
(3)创建登录验证处理页面从session中提取该用户信息再次验证用户信息是否存在,如果存在则显示首页内容,不存在则定位到登录页面。
(4)创建新闻发布系统首页面,调用登录验证处理代码,并显示首页面内容。
需求:
升级新闻发布系统,提供用户登录页面,增加访问控制功能,要求用户必须登录之后,才能访问新闻发布系统。
关键代码:
1、在news数据库中创建表userinfo,负责存储用户名、密码,创建类(User.java),负责存储用户名、密码。
2、创建用户登录静态login.html页面
<form method="POST" name="form1" action="login.jsp">
3、创建登录处理页面login.jsp
<%
// 获得登录信息
request.setCharacterEncoding("GBK");
String pass = request.getParameter("password");
String name = request.getParameter("loginName");
Connection con = null;
PreparedStatement pStatement = null;
try{
// 查询数据库,判断该用户是否注册
con = ConnectionManager.getConnection();
String sql = "select * from userinfo where loginname = ? and password=?";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, name);
pStatement.setString(2,pass);
ResultSet rs = pStatement.executeQuery();
// 如果是已注册用户
if (rs.next()) {
// 把用户名、密码封装在User对象中
User loginedUser = new User(name, pass);
// 在session中存放用户登录信息
session.setAttribute("LOGINED_USER", loginedUser);
// 进入新闻发布系统的首页面
response.sendRedirect("index.jsp");
} else {
// 如果不是已注册用户,仍然回到登录页面
response.sendRedirect("login.html");
}
}catch(Exception e){
out.println("发生错误!错误原因:"+e.getMessage());
}finally{
ConnectionManager.closeStatement(pStatement);
ConnectionManager.closeConnection(con);
}
%>
4、创建登录验证处理页面checklogin.jsp
<%
User user = (User) session.getAttribute("LOGINED_USER");
if (user == null) {
response.sendRedirect("login.html");
}
%>
5、创建新闻发布系统首页面index.jsp
<%@ include file="checklogin.jsp"%>
实现网站登出功能的步骤
(1)在新闻发布系统首页面中添加[安全退出]链接
(2)创建网站登出处理页面,把当前会话置为无效,返回新闻发布系统首页面
(3)在[安全退出]链接中调用网站登出处理程序
需求:
实现新闻发布系统当前用户安全退出功能。
关键代码:
在新闻发布系统首页面中添加[安全退出]链接。
[<a target="_parent" href="adminOut.jsp"><font color="#FFFFFF">安全退出</font> </a>]
创建网站登出处理页面adminOut.jsp。
<%
session.invalidate();
response.sendRedirect("../index.jsp");
%>
实现网站访问人数统计功能的步骤
(1)创建静态登录页面,并指定表单提交由登录处理页面进行处理。
(2)创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,把已登录用户的信息保存在一个全局范围内。
(3)在新闻发布系统左导航栏中加入超链接,用来导航到右侧的已访问人数统计页面。
(4)创建已访问人数统计页面,从全局范围内取出访问者个数并显示。
需求:
如下图示为新闻发布系统增加已访问人数统计功能。
关键代码:
1、创建静态登录页面login2.html
<form method="POST" name="form1" action="login2.jsp">
2、创建登录处理页面login2.jsp,把已登录用户的信息保存在一个全局范围内
if (rs.next()) {
User logineduser = new User(name, pass);
session.setAttribute("LOGINED_USER", logineduser);
List loginedUsers = new ArrayList(); //访问者列表
if (application.getAttribute("LOGINED_USER") != null) {
// 从全局范围内取出原有的访问者列表
loginedUsers = (List) application.getAttribute("LOGINED_USER");
}
// 把新登录用户的信息存入访问者列表中
loginedUsers.add(logineduser);
application.setAttribute("LOGINED_USER", loginedUsers);
response.sendRedirect("index.jsp");
}
3、在新闻发布系统左导航left.jsp页面中加入超链接
<a href="showAllLoginedUsers.jsp" target="mainFrame">已访问人数统计</a>
4、创建已访问人数统计页面showAllLoginedUsers.jsp
<html>
<%
// 访问者列表
List loginedUsers = new ArrayList();
// 从全局范围内取出访问者列表
if (application.getAttribute("LOGINED_USER") != null) {
loginedUsers = (List) application.getAttribute("LOGINED_USER");
}
%>
<body>
<p align="center"><br><br><br>
目前,有<%=loginedUsers.size()%>人已经访问过本网站!<br><br>
访问者的登录名称分别是:<br>
<%
for (int i = 0; i < loginedUsers.size(); i++) {
User logineduser = (User) loginedUsers.get(i);
out.print(logineduser.getName());
out.print("<br/>");
}
%>
</p>
</body>
</html>
session对象:
session对象用来存储有关用户会话的所有信息,一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程。session是JSP内置对象,与浏览器一一对应,允许用户存储和提取会话状态的信息。
application对象:
application类似于系统的“全局变量”,用于实现用户之间的数据共享。
2、流程和步骤
实现网站登录功能的步骤
(1)创建静态登录页面,并指定表单提交由登录处理页面进行处理。
(2)创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,在session中保存该用户的登录信息,并且跳转到新闻发布系统的首页面,如果用户未注册,则仍然回到登录页面。
(3)创建登录验证处理页面从session中提取该用户信息再次验证用户信息是否存在,如果存在则显示首页内容,不存在则定位到登录页面。
(4)创建新闻发布系统首页面,调用登录验证处理代码,并显示首页面内容。
需求:
升级新闻发布系统,提供用户登录页面,增加访问控制功能,要求用户必须登录之后,才能访问新闻发布系统。
关键代码:
1、在news数据库中创建表userinfo,负责存储用户名、密码,创建类(User.java),负责存储用户名、密码。
2、创建用户登录静态login.html页面
<form method="POST" name="form1" action="login.jsp">
3、创建登录处理页面login.jsp
<%
// 获得登录信息
request.setCharacterEncoding("GBK");
String pass = request.getParameter("password");
String name = request.getParameter("loginName");
Connection con = null;
PreparedStatement pStatement = null;
try{
// 查询数据库,判断该用户是否注册
con = ConnectionManager.getConnection();
String sql = "select * from userinfo where loginname = ? and password=?";
pStatement = con.prepareStatement(sql);
pStatement.setString(1, name);
pStatement.setString(2,pass);
ResultSet rs = pStatement.executeQuery();
// 如果是已注册用户
if (rs.next()) {
// 把用户名、密码封装在User对象中
User loginedUser = new User(name, pass);
// 在session中存放用户登录信息
session.setAttribute("LOGINED_USER", loginedUser);
// 进入新闻发布系统的首页面
response.sendRedirect("index.jsp");
} else {
// 如果不是已注册用户,仍然回到登录页面
response.sendRedirect("login.html");
}
}catch(Exception e){
out.println("发生错误!错误原因:"+e.getMessage());
}finally{
ConnectionManager.closeStatement(pStatement);
ConnectionManager.closeConnection(con);
}
%>
4、创建登录验证处理页面checklogin.jsp
<%
User user = (User) session.getAttribute("LOGINED_USER");
if (user == null) {
response.sendRedirect("login.html");
}
%>
5、创建新闻发布系统首页面index.jsp
<%@ include file="checklogin.jsp"%>
实现网站登出功能的步骤
(1)在新闻发布系统首页面中添加[安全退出]链接
(2)创建网站登出处理页面,把当前会话置为无效,返回新闻发布系统首页面
(3)在[安全退出]链接中调用网站登出处理程序
需求:
实现新闻发布系统当前用户安全退出功能。
关键代码:
在新闻发布系统首页面中添加[安全退出]链接。
[<a target="_parent" href="adminOut.jsp"><font color="#FFFFFF">安全退出</font> </a>]
创建网站登出处理页面adminOut.jsp。
<%
session.invalidate();
response.sendRedirect("../index.jsp");
%>
实现网站访问人数统计功能的步骤
(1)创建静态登录页面,并指定表单提交由登录处理页面进行处理。
(2)创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,把已登录用户的信息保存在一个全局范围内。
(3)在新闻发布系统左导航栏中加入超链接,用来导航到右侧的已访问人数统计页面。
(4)创建已访问人数统计页面,从全局范围内取出访问者个数并显示。
需求:
如下图示为新闻发布系统增加已访问人数统计功能。
关键代码:
1、创建静态登录页面login2.html
<form method="POST" name="form1" action="login2.jsp">
2、创建登录处理页面login2.jsp,把已登录用户的信息保存在一个全局范围内
if (rs.next()) {
User logineduser = new User(name, pass);
session.setAttribute("LOGINED_USER", logineduser);
List loginedUsers = new ArrayList(); //访问者列表
if (application.getAttribute("LOGINED_USER") != null) {
// 从全局范围内取出原有的访问者列表
loginedUsers = (List) application.getAttribute("LOGINED_USER");
}
// 把新登录用户的信息存入访问者列表中
loginedUsers.add(logineduser);
application.setAttribute("LOGINED_USER", loginedUsers);
response.sendRedirect("index.jsp");
}
3、在新闻发布系统左导航left.jsp页面中加入超链接
<a href="showAllLoginedUsers.jsp" target="mainFrame">已访问人数统计</a>
4、创建已访问人数统计页面showAllLoginedUsers.jsp
<html>
<%
// 访问者列表
List loginedUsers = new ArrayList();
// 从全局范围内取出访问者列表
if (application.getAttribute("LOGINED_USER") != null) {
loginedUsers = (List) application.getAttribute("LOGINED_USER");
}
%>
<body>
<p align="center"><br><br><br>
目前,有<%=loginedUsers.size()%>人已经访问过本网站!<br><br>
访问者的登录名称分别是:<br>
<%
for (int i = 0; i < loginedUsers.size(); i++) {
User logineduser = (User) loginedUsers.get(i);
out.print(logineduser.getName());
out.print("<br/>");
}
%>
</p>
</body>
</html>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询