JSP页面主要代码:
<body>
<form id="page6_jHtmlForm1" name="page6_jHtmlForm1" method="post" action="">
<div id="page6_e" class="Panel Panel_Null">
<div id="page6_jLabel4" class="text">毕业设计管理系统</div></div>
<div id="page6_jLabel1" class="text">用户名:</div>
<input type="text" class="Edit Edit_style1" value="" id="page6_jEdit1" name="username"/>
<div id="page6_jLabel2" class="text">密码:</div>
<input type="password" class="Edit Edit_style4" value="" id="page6_jEdit2" name="password"/>
<div class="radio radio_style1" id="page6_jRadioButton2"><label><input type="radio" name="typeradio" id="page6_jRadioButton2_1"/>我是学生</label></div>
<div class="radio radio_style1" id="page6_jRadioButton1"><label><input type="radio" name="typeradio" id="page6_jRadioButton1_1"/>我是教师</label></div>
<div id="page6_jButton1" class="vjbutton vjbutton_c_style1 border_radius_3"><div class="vjbutton_txtR" onclick="login();">登录</div></div>
<div id="page6_jButton2" class="vjbutton vjbutton_c_style1 border_radius_3"><div class="vjbutton_txtR" onclick="reset();">重置</div></div> </form>
<script type="text/javascript">
//重置操作
function reset(){document.getElementById("page6_jHtmlForm1").reset();
}
//用户登录,不同的用户处理不同的action
function login(){let user=page6_jHtmlForm1.username.value;
let psw=page6_jHtmlForm1.password.value;
if(user==null || user=="" || psw==null || psw==""){
alert("账户或密码为空");
}else{
var radios=document.getElementsByName("typeradio");
if(radios[0].checked){
$("#page6_jEdit1").attr("name","student.sid");
$("#page6_jEdit2").attr("name","student.password");
page6_jHtmlForm1.action="stuLoginAction";
page6_jHtmlForm1.submit();
}else if(radios[1].checked){
$("#page6_jEdit1").attr("name","teacher.tid");
$("#page6_jEdit2").attr("name","teacher.password");
page6_jHtmlForm1.action="teaLoginAction";
page6_jHtmlForm1.submit();
}else{
alert("请选择你的身份");
}
}
}
</script>
</body>
Struts.xml主要代码:
<action name="stuLoginAction" class="LoginAction" method="stuLoginAction">//class那里采用的是Spring依赖注入
<result name="success">/common/index.jsp</result>
<result name="input">/login.jsp</result>
</action>
<action name="teaLoginAction" class="LoginAction" method="teaLoginAction">//class那里采用的是Spring依赖注入
<result name="success">/common/index.jsp</result>
<result name="input">/login.jsp</result>
</action>
Spring中Action的代码:
<bean id="LoginAction" class="com.bysj.action.LoginAction">
<property name="loginService" ref="loginService"/>//再次通过bean注入
<property name="userService" ref="userService"/>//再次通过bean注入
</bean>
<bean id="loginService" class="com.bysj.service.LoginService">
<property name="loginDao" ref="loginDao"/>
</bean>
<bean id="userService" class="com.bysj.service.UserService">
<property name="userDao" ref="userDao"/>
</bean>
Action类主要代码:
public String execute(){
//studentDao.addStudent(student);
return INPUT;
}
public String stuLoginAction(){
if(loginService.stuLogin(student.getSid(),student.getPassword())){
map=ActionContext.getContext().getSession();
map.put("user",student.getSid());
map.put("Lid", "1");
return SUCCESS;
}else{
return INPUT;
}
}
public String teaLoginAction(){
if(loginService.teaLogin(teacher.getTid(),teacher.getPassword())){
map=ActionContext.getContext().getSession();
String tid = teacher.getTid();
map.put("user", tid);
map.put("Lid", userService.findById(tid)+"");//根据教师的id获取教师里面的权限
System.out.println(map.get("Lid"));return SUCCESS;
}else{
return INPUT;
}
}
userService.findById(tid)方法:
public int findById(String id){
Session session = null;
try {
session = getSession();
String sql = "select role_id from t_user_role where user_id = ?";
List list = session.createSQLQuery(sql).setParameter(0, id).list();
return (Integer) list.get(0);
}catch (Exception e) {
e.printStackTrace();
return 0;
}finally{
session.close();
}
}
修改密码的Action:
public String changePswAction(){
System.out.println(oldPsw+"========"+newPsw1+"====="+newPsw2);
int flag=1;
map=ActionContext.getContext().getSession();
if(map.get("Lid").equals("1")){
System.out.println("Student:"+student.getSid()+" "+oldPsw+" "+newPsw1);
if(loginService.changePsw(student.getSid(),oldPsw,newPsw1)==1){
flag=1;
}else {
flag=0;
}
}else {
System.out.println("Teacher:"+teacher.getTid()+" "+teacher.getPassword()+" "+newPsw1);
if(loginService.changePsw(teacher.getTid(),oldPsw,newPsw1)==1){
flag=1;
}else {
flag=0;
}
}
JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("flag", flag);
result=jsonObject.toString();
return SUCCESS;
}
changePsw方法:
public int changePwd(String id,String oldPsw,String newPsw){
int flag=1;
//得到session
Session session=null;
Transaction transaction=null;
try{
session=sessionFactory.openSession();
//hql语句,Users代表是models里的实体类,name和password代表实体类的属性
Map map = ActionContext.getContext().getSession();
String queryString;
if (map.get("Lid").equals("1")) {
queryString="from Student where sid=? and password=?";
Query queryObject=session.createQuery(queryString);
queryObject.setParameter(0, id);
queryObject.setParameter(1, oldPsw);
List<Student> list=queryObject.list();
if(list.size()==0){
flag=0;//旧密码错误
}else{
Student student=list.get(0); //找到要修改密码的用户对象
student.setPassword(newPsw);
transaction=session.beginTransaction();
session.update(student);//在缓存中保存数据,受影响行数
transaction.commit();//写入数据库表
}
}else {
queryString="from Teacher where tid=? and password=?";
Query queryObject=session.createQuery(queryString);
queryObject.setParameter(0, id);
queryObject.setParameter(1, oldPsw);
List<Teacher> list=queryObject.list();
if(list.size()==0){
flag=0;//旧密码错误
}else{
Teacher teacher=list.get(0); //找到要修改密码的用户对象
teacher.setPassword(newPsw);
transaction=session.beginTransaction();
session.update(teacher);//在缓存中保存数据,受影响行数
transaction.commit();//写入数据库表
}
}
return flag;
}catch (Exception e) {
e.printStackTrace();
return 0;
}finally{//关闭session
session.close();//调用HibernateSessionFactory的静态方法关闭Session
}
}