session在登录中的使用
package action.exam; import java.util.Map; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; import dao.exam.StudentDAO;
import dao.exam.TeacherDAO;
import dao.exam.AdministratorDAO;
import entity.exam.Student;
import entity.exam.Administrator;
import entity.exam.Teacher;
public class LoginAction extends ActionSupport
{
private String id; // 接受用户编号
private String password; // 接受用户密码
private String role;
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getRole()
{
return role;
}
public void setRole(String role)
{
this.role = role;
}
public String execute() throws Exception
{
Map session = ActionContext.getContext().getSession();//非IoC方式的另外一种
if("student".equals(role))
{
//如果以学生身份登录
StudentDAO sdao=new StudentDAO();
Student st=sdao.selectStudent(id);
if(st==null)
{
addActionError("该学生编号不存在!");
return "input";
}
else if(!st.getPassword().equals(password))
{
addActionError("该学生密码不正确!");
return "input";
}
else
{
session.put("student",st);
return "studentSuccess";
}
}
else if("administrator".equals(role))
{
AdministratorDAO adao=new AdministratorDAO();
Administrator ad=adao.selectAdministrator(id);
if(ad==null)
{
addActionError("该管理员编号不存在!");
return "input";
}
else if(!ad.getPassword().equals(password))
{
addActionError("该管理员密码不正确!");
return "input";
}
else
{
session.put("administrator",ad);
return "administratorSuccess";
}
}
else
{
TeacherDAO tdao=new TeacherDAO();
Teacher te=tdao.selectTeacher(id);
if(te==null)
{
addActionError("该教师编号不存在!");
return "input";
}
else if(!te.getPassword().equals(password))
{
addActionError("该教师密码不正确!");
return "input";
}
else
{
session.put("teacher",te);
return "teacherSuccess";
}
}
}
}
在index.jsp页面如何取得参数
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>开始考试</title>
<link href="student/images/css2.css" rel="stylesheet" type="text/css"/>
<style type="text/css">
<!--
.STYLE3 {font-size: 18px; }
.STYLE4 {font-size: 18px; font-weight: bold; }
.STYLE5 {color: #FF0000}
-->
</style>
<script type="text/javascript">
var ksTime; //定义考试时间以分钟计算
ksTime = 60;//设置时间 这里设置为0.1代表是6秒,测试用
if(readCookie("ss")=="")
{
setCookie("ss",new Date(),ksTime/60);
}
function sT()
{
var tti = new Date();
var lt = parseInt((tti-new Date(readCookie("ss")))/1000)
if((ksTime*60-lt)<0)
{
setCookie("ss",new Date(),0);
alert("考试时间到!\n即将提交试卷!");
document.forms[0].submit();
}
else
{
lm = Math.floor(lt / 60);
ls = lt % 60;
allY = ksTime*60-lt;
ym = Math.floor(allY / 60);
ys = allY % 60;
document.getElementById("tTime").innerHTML = "考试已经开始了" + lm + "分" + ls + "秒" + ",剩余" + ym + "分" + ys + "秒";
var ttt = setTimeout("sT()",1000);
}
}
function readCookie(name)
{
var cookieValue = "";
var search = name + "=";
if(document.cookie.length > 0)
{
offset = document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1)
end = document.cookie.length;
cookieValue = document.cookie.substring(offset, end)
}
}
return cookieValue;
}
function setCookie(name, value, hours)
{
var expire = "";
if(hours != null) {
expire = new Date((new Date()).getTime() + hours * 3600000);
expire = "; expires=" + expire.toGMTString();
}
document.cookie = name + "=" + value + expire;
}
</script>
</head> <body onload="sT()">
<table width="1003" height="485" border="0" cellpadding="0" cellspacing="0" class="centerbg">
<tr>
<td width="149" height="485"> </td>
<td width="741" valign="top" class="rightbian">
<form action="submitExam.action" method="post">
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="10">
<tr>
<td><div align="center" class="STYLE3">考试时间:60 分钟</div></td>
<td><div align="center" class="STYLE3">考生:${sessionScope.student.name}</div></td>
<td><div align="center" class="STYLE3">总分 :100 分</div></td>
</tr>
<tr>
<td> </td>
<td><div id="tTime"></div></td>
<td> </td>
</tr>
<tr>
<td colspan="3" bgcolor="#999999" class="STYLE4">选择题(每小题5分,共10个)</td>
</tr>
<!--题目开始--> <s:iterator value="#request.ChoiceQuestion" var="cq" status="sta">
<tr>
<td colspan="3"><strong>第<span class="STYLE5">${sta.index + 1}</span>题 ${cq.c_question}</strong> </td>
</tr>
<tr>
<td colspan="3"><strong>A.</strong>${cq.c_choiceA}</td>
</tr>
<tr>
<td colspan="3"><strong>B.</strong>${cq.c_choiceB}</td>
</tr>
<tr>
<td colspan="3"><strong>C.</strong>${cq.c_choiceC}</td>
</tr>
<tr>
<td colspan="3"><strong>D.</strong>${cq.c_choiceD}</td>
</tr>
<tr>
<td height="32" colspan="3" bgcolor="#CCCCCC">选择答案:
<input type="hidden" name="c_answer1${sta.index}" value="${cq.c_answer}"/>
<input type="radio" name="c_answer${sta.index}" value="A" checked="checked"/>
A
<input type="radio" name="c_answer${sta.index}" value="B" />
B
<input type="radio" name="c_answer${sta.index}" value="C" />
C
<input type="radio" name="c_answer${sta.index}" value="D" />
D</td>
</tr>
</s:iterator>
<tr>
<td colspan="3" bgcolor="#999999" class="STYLE4">填空题(每小题5分,共10个)</td>
</tr>
<s:iterator value="#request.FillQuestion" var="fq" status="stf">
<tr>
<td colspan="3"><strong>第<span class="STYLE5">${stf.index + 11}</span>题 ${fq.f_question}</strong> </td>
</tr> <tr>
<td height="32" colspan="3" bgcolor="#CCCCCC">输入答案:
<input type="hidden" name="f_answer1${stf.index}" value="${fq.f_answer}"/>
<input type="text" name="f_answer${stf.index}" size="40"/></td>
</tr>
</s:iterator>
<!--题目结束-->
<tr>
<td colspan="3"><div align="center">
<input type="submit" value=" 提交答卷 " name="Submit" />
</div></td>
</tr>
</table>
</form>
</td>
<td width="113"> </td>
</tr>
</table>
</body>
</html>
session在登录中的使用的更多相关文章
- TP框架中如何使用SESSION限制登录?
TP框架中如何使用SESSION限制登录? 之前总是被问题今天才明白,最高效的来做页面访问限制问题. OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断. 实现如下: 继承Cont ...
- Express + Session 实现登录验证
1. 写在前面 当我们登录了一个网站,在没有退出登录的情况下,我们关闭了这个网站 ,过一段时间,再次打开这个网站,依然还会是登录状态.这是因为,当我们登录了一个网站,服务器会保存我们的登录状态,直到我 ...
- 使用COOKIE实现登录 VS 使用SESSION实现登录
注:本文使用的代码基于PHP,其他语言逻辑同理. 一:使用COOKIE实现登录验证 使用cookie实现登录的方式,主要通过一些单向的加密信息进行验证.比如admin用户登录了之后,服务端生成一个co ...
- cookie和session 以及Django中应用
cookie和session 以及Django中应用 cookie和session机制 cookie和session机制 cookie机制采用的是在客户端保持状态的方案.作用就是为了解决HTTP协 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- [转]Web登录中的信心安全问题
1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中, ...
- 解决跨域POST登录中IE不能正常工作的bug
结合我的这篇blog <简单实用的跨域表单POST提交> 文章,这篇blog中的思路是解决在www.a.com站中登录 同时要把关联站www.b.com登录状态也设置成登录状态,在a中获取 ...
- Shiro登录中遇到了问题
Shiro登录中遇到了问题 记录二次开发中遇到的问题, 如果系统学习Shiro, 推荐跟我学Shrio. 问题 项目是要将验证从本地改为LDAP验证, 但是因为jeecms的验证和授权中, 用户和角色 ...
- Session保存用户名到Session域对象中
Session保存用户名 1.构造登录界面 用户名: 密 码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!DOCTYPE html> < ...
随机推荐
- NSDictionary 使用总结
NSDictionary使用小结 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @ ...
- Java中权限修饰符public、private、protected和default的区别
1.public 可以修饰类.成员变量和成员函数,没有任何限制,同一个包中,或者不同包中的类都可以自由访问 2.private 可以修饰成员变量和成员函数,只能在本类中使用 3.default (不写 ...
- Node.js Express框架
Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...
- Parallax
常听说牛人都是jquery插件用得很好的人. 现在有了github,英文过关的话什么好东西下不到啊,再不用去浏览那些抄来抄去骗人看广告的垃圾网站了. 扯远点,本人有严重的熊猫眼,所以用一种叫倦眼充电棒 ...
- Mashmokh and Tokens
Codeforces Round #240 (Div. 2) B;http://codeforces.com/problemset/problem/415/B 题意:老板一天发x张代币券,员工能用它来 ...
- maven jetty plugin
转载:http://blog.163.com/xueling1231989@126/blog/static/1026408072013101311395492/ 前言: 在 maven 下测试调试时, ...
- COJ 2110 Day7-例3
Day7-例3 难度级别:C: 运行时间限制:5000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 输入 输入的第一行包含整数n和k,其中n(2 ≤ n ≤100 ...
- Light OJ 1030 - Discovering Gold
题目大意: 给你一个1*N的方格,你初始位置是在1,给你一个骰子,假设你现在的位置是X,你投掷一个骰子掷的点数是y, 那么你的新位置就是 X+y, 并且你可以得到新位置的宝藏.假如X+y > N ...
- GeoPandas官方中文文档--译著
译自GeoPandas 0.1.0 文档(原版译著,有错误欢迎交流,转载请注明) GeoPandas是一个开源项目,它的目的是使得在Python下更方便的处理地理空间数据.GeoPandas扩展了pa ...
- poj2774 Long Long Message(后缀数组)
[题目链接] http://poj.org/problem?id=2774 [题意] A & B的最长公共子序列. [思路] 拼接+height数组.将AB拼接成一个形如A$B的串,枚举hei ...