Java struts2应用程序默认为error.jsp

Java struts2应用程序默认为error.jsp,java,mysql,eclipse,hibernate,struts2,Java,Mysql,Eclipse,Hibernate,Struts2,我正在创建一个struts2应用程序。我希望用户登录到他们的 账户如果找到该记录,则应转到success.jsp。如果 找不到该帐户,它应默认为error.jsp。他们可以 然后注册。我遇到的问题是记录是否正确 无论是否在数据库中,我都会被重定向到error.jsp。 我将非常感谢您的帮助和一些类似的解释 这是我的档案: 学生信息 package org.comp.dto; //import public class StudentInfo implements Serializab

我正在创建一个struts2应用程序。我希望用户登录到他们的 账户如果找到该记录,则应转到success.jsp。如果 找不到该帐户,它应默认为error.jsp。他们可以 然后注册。我遇到的问题是记录是否正确 无论是否在数据库中,我都会被重定向到error.jsp。 我将非常感谢您的帮助和一些类似的解释

这是我的档案:

学生信息

package org.comp.dto;

//import

    public class StudentInfo implements Serializable{
        private int studentId;
        private String userName;
        private String password;
        private String password1;
        private String firstName;
        private String lastName;
        private int age;
        private String dateofBirth;
        private Calendar dateCreated;
        private GregorianCalendar lastLogin;


        public int getStudentId() {
            return studentId;
        }
        public void setStudentId(int studentId) {
            this.studentId = studentId;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getPassword1() {
            return password1;
        }
        public void setPassword1(String password1) {
            this.password1 = password1;
        }
        public String getFirstName() {
            return firstName;
        }
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getDateofBirth() {
            return dateofBirth;
        }
        public void setDateofBirth(String dateofBirth) {
            this.dateofBirth = dateofBirth;
        }

        public GregorianCalendar getLastLogin() {
            return lastLogin;
        }
        public void setLastLogin(GregorianCalendar lastLogin) {
            this.lastLogin = lastLogin;
        }
        public Calendar getDateCreated() {
            return dateCreated;
        }
        public void setDateCreated(Calendar dateCreated) {
            this.dateCreated = dateCreated;
        }

        }
StudentInfo.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
 <class mutable="true" name="org.comp.dto.StudentInfo" table="studentinfo">

        <id name="studentId" type="int">
            <column name="studentId"/>
               <generator class="native"/>
        </id>

        <property column="userName" name="userName" type="string" not-null="true"/> 
        <property column="password" name="password" type="string" not-null="true"/>
        <property column="firstName" name="firstName" type="string" not-null="true"/>
        <property column="lastName" name="lastName" type="string" not-null="true"/>
        <property column="age" name="age" type="int" not-null="true"/>
        <property column="dateofBirth" name="dateofBirth" type="string" not-null="true"/>
        <property column="dateCreated" name="dateCreated" type="calendar" not-null="true"/>
        <property column="lastLogin" name="lastLogin" type="timestamp" not-null="true"/>
    </class>
</hibernate-mapping>
login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
   <%@ taglib uri="/struts-tags" prefix="s"%> 
<!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=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
   <s:form action="login" method="get">
       <s:textfield label="Please StudentID:" key="studentId"/>
       <s:textfield label="Please Enter User Name:" key="userName"/>
       <s:password label="Please Enter Password:" key="password"/>
       <s:submit/>
   </s:form>
</body>
</html>

登录页面

在登录类中:

String sQry = "SELECT firstName FROM StudentInfo WHERE studentinfo.userName=? AND studentinfo.password=?";
        PreparedStatement q = conn.prepareStatement(sQry);


        q.setInt(1, studentId);
        q.setString(2, userName);
        q.setString(3, password);
在查询中有两个参数(用户名、密码)。但是您正在尝试在后面设置三个(studentId、用户名、密码)


要查看控制台中的错误,请编写ex.printStackTrace();在catch块中(ex是您的异常名称)。

是否尝试调试?尝试调试并检查是否有来自DB的数据。立即在服务器上运行调试来宾,我对该查询表示歉意,我已对其进行了编辑。但问题仍然存在。@CODI 1)尝试调试应用程序。2) 尝试在之前编写sysout语句,这可能会引发错误3)我更喜欢-如果您可以printStackTrace()的话异常并向我们显示错误消息,这样会有帮助。我无法粘贴所有stace,但下面是相关的:org.hibernate.HibernateException:getjdbconnectionaccess在没有活动事务的情况下无效org.hibernate.HibernateException:getjdbconnectionaccess在没有活动事务的情况下无效org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:352)在com.sun.proxy.org.action.LoginAction.LoginAction.LoginAction(LoginAction.java:103)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)上的$Proxy6.getJdbcConnectionAccess(未知源)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)见本文:和
package org.action;

//import  

public class LoginAction extends ActionSupport implements ModelDriven{
    private int studentId;
    private String userName;
    private String password;
    private String firstName;
    private StudentInfo studentUser = new StudentInfo();
    private Session session;
    private String message;
    PreparedStatement sQry;
    ResultSet rs;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public StudentInfo getStudentUser() {
        return studentUser;
    }

    public void setStudentUser(StudentInfo studentUser) {
        this.studentUser = studentUser;
    }

    public LoginAction() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    public void validate() {
        if (StringUtils.isEmpty(studentUser.getUserName())){
             addFieldError("userName", "Username cannot be blank");
         }
        if (StringUtils.isEmpty(studentUser.getPassword())){
             addFieldError("password", "Password cannot be blank");

        }
     }

    @Override
    public String execute() throws Exception {
            return SUCCESS; 
        }

    public String login(){
        String ret = ERROR;
        Connection conn = null;
        try {

            SessionImplementor impl = (SessionImplementor)session;
            conn = impl.getJdbcConnectionAccess().obtainConnection();
            org.hibernate.Transaction tx = session.beginTransaction();

            String sQry = "SELECT firstName FROM StudentInfo WHERE studentinfo.studentId=? AND studentinfo.userName=? AND studentinfo.password=?";
            PreparedStatement q = conn.prepareStatement(sQry);


            q.setInt(1, studentId);
            q.setString(2, userName);
            q.setString(3, password);


            rs = q.executeQuery();

            while (rs.next()){
                rs.getString(2);

                ret = SUCCESS;
            }


        }
                catch(Exception ex){
            ret = ERROR;
        }

        finally
        {
            if (conn !=null){
                try {
                    session.getTransaction().rollback();
                    conn.close();
                }
                catch (Exception ex){

                }
            }

        }
        return ret;

        }


    public String accountSetUp() throws Exception{
        Transaction tx = null;
        try {
        tx = session.beginTransaction();

        Calendar dateCreated = new GregorianCalendar();
        studentUser.setDateCreated(dateCreated);
        session.save(studentUser);
        session.getTransaction().commit();      

        return SUCCESS;
    }
        catch (HibernateException ex){
         if(tx != null) tx.rollback();
         ex.printStackTrace();
         return null; 

        }

        finally
        {
            session.close();

        }
        }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    @Override
    public Object getModel() {
        return studentUser;
    }

    }
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
   <%@ taglib uri="/struts-tags" prefix="s"%> 
<!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=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
   <s:form action="login" method="get">
       <s:textfield label="Please StudentID:" key="studentId"/>
       <s:textfield label="Please Enter User Name:" key="userName"/>
       <s:password label="Please Enter Password:" key="password"/>
       <s:submit/>
   </s:form>
</body>
</html>
String sQry = "SELECT firstName FROM StudentInfo WHERE studentinfo.userName=? AND studentinfo.password=?";
        PreparedStatement q = conn.prepareStatement(sQry);


        q.setInt(1, studentId);
        q.setString(2, userName);
        q.setString(3, password);