代码:
StudentAction:
package com.sise.ssh.action;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sise.ssh.dao.StudentDao;
import com.sise.ssh.dao.impl.StudentDaoImpl;
import com.sise.ssh.po.Student;
import com.sise.ssh.service.StudentService;
import com.sise.ssh.service.impl.StudentServiceImpl;
public class StudentAction extends ActionSupport {
static ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
static StudentService personService=(StudentService)ctx.getBean("personService");
private String sno;
private static String ssno;
private static String spassword;
private String sname;
private String ssex;
private String limit;
private static String password;
private String ssubject;
private String s;
private String skaoqin;
private Student student;
private StudentDao dao;
public StudentAction(){
dao=new StudentDaoImpl();
student=new Student();
}
public String getSno(){
return sno;
}
public void setSno(String sno){
this.sno=sno;
}
public String getSname(){
return sname;
}
public void setUsername(String username){
this.sname=username;
}
public String getlimit(){
return limit;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password=password;
}
public String changepassword() throws Exception{
student.setPassword(password);
dao.updatePassword(student);
return SUCCESS;
}
public static List<Student> findStudent(){
List<Student> students=personService.findStudent("from Student");
for(Student student:students){
ssno=student.getSno();
spassword=student.getPassword();
     //这里只能获取到从数据库list出来的表内最后一个学号跟密码
}
return students;
}
public void validate(){
if(null==sno||"".equals(sno.trim()))
addFieldError("sno","学号必须输入");
if(null==password||"".equals(password.trim()))
addFieldError("password","密码必须输入");
}
public String islogin() throws Exception{
findStudent();
System.out.println(ssno+spassword);
if(ssno.equals(sno.trim()) && spassword.equals(password.trim()))
{
return SUCCESS;
}
else{
addFieldError("password","用户名或密码错误");
return LOGIN;
}
}

}Login.jsp:
<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB18030">
<title>登陆</title>
</head>
<body>
<s:form action="loginaction" namespace="/action">
<s:textfield name="sno" label="学号"/>
<s:textfield name="password" label="密码"/>
<s:submit value="登陆" />
</s:form>
</body>
</head>
</html>Struts.xml:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="javasssh" extends="struts-default" namespace="/action">
<action name="loginaction" class="com.sise.ssh.action.StudentAction" method="islogin">
<result name="input">/login.jsp</result>
<result name="login">/login.jsp</result>
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
问题:
我在student表内有多个学号密码,但是在jsp页面里只能输出表内最后一个学号跟密码才能进入index页面,怎么才能输入其他学号都能进入index页面?findStudent()方法应该怎么写,才能只要输入表中有的学号跟密码都能进入页面?

解决方案 »

  1.   

    for(Student student:students){
    ssno=student.getSno();
    spassword=student.getPassword();
      //这里只能获取到从数据库list出来的表内最后一个学号跟密码
    }
    你这地方出错了,你这样他当然得到的是最后一条数据了如果我是你我就根据用户名和密码去数据库查询student对象如果存在就会返回一个student对象else返回的是null
    这样你又不用查询全部的student对象出来
      

  2.   

    public static List<Student> findStudent(){
    List<Student> students=personService.findStudent("from Student");
    return students;
    }
    public String islogin() throws Exception{
    List<Student> lst = findStudent();
     for(Student student:students){
       ssno=student.getSno();
       spassword=student.getPassword();
      if(ssno.equals(sno.trim()) && spassword.equals(password.trim()))
      {
      return SUCCESS;
       }  }addFieldError("password","用户名或密码错误");
    return LOGIN;
    }
      

  3.   

    for(Student student:students){
    ssno=student.getSno();
    spassword=student.getPassword();
    //这里只能获取到从数据库list出来的表内最后一个学号跟密码
    }
    这样循环,每循环一次就会将查询出来的sno和pwd赋值给ssno和spassword知道循环结束 
    这样你第一次循环查询的值是A而第二次循环查询出来的是B但是ssno=student.getSno();这样ssno的值又被修改了变成B了每次循环值都会改变
      

  4.   

    personService.findStudent("from Student");修改为
    personService.findStudent("from Student where 字段1='参数1' and 字段2='参数2'");返回的是一个对象