java 写jsp登录页面。判定数据库里的用户名和密码。 为什么 无论我在页面输入什么 ,都显示登录失败。 10
packagecn.zero.action;importjava.sql.Connection;importjava.sql.DriverManager;importja...
package cn.zero.action;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import cn.zero.service.LoginCheck;
import oracle.jdbc.driver.DBConversion;
import org.apache.struts2.ServletActionContext;
public class LoginAction extends ActionSupport{
private String uname;
private String upassword;
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public LoginAction()
{
}
public String getUname()
{
return uname;
}
public void setUname(String uname)
{
this.uname = uname;
}
public String getUpassword()
{
return upassword;
}
public void setUpassword(String upassword)
{
this.upassword = upassword;
}
public void validate()
{
if (getUname() == null || "".equals(getUname().trim()))
addFieldError("uname", "必须输入用户名");
if (getUpassword() == null || "".equals(getUpassword().trim()))
addFieldError("upassword", "必须输入密码");
}
public String execute() throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "pain", "123");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select *from reguser where user_name='"+this.uname+"' and user_password='"+this.upassword+"'");
try {
if(!rs.next()){
this.msg="用户名或密码不正确";
return "error";
}
else
return "success";
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
} 展开
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.opensymphony.xwork2.ActionSupport;
import javax.servlet.http.HttpServletRequest;
import cn.zero.service.LoginCheck;
import oracle.jdbc.driver.DBConversion;
import org.apache.struts2.ServletActionContext;
public class LoginAction extends ActionSupport{
private String uname;
private String upassword;
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public LoginAction()
{
}
public String getUname()
{
return uname;
}
public void setUname(String uname)
{
this.uname = uname;
}
public String getUpassword()
{
return upassword;
}
public void setUpassword(String upassword)
{
this.upassword = upassword;
}
public void validate()
{
if (getUname() == null || "".equals(getUname().trim()))
addFieldError("uname", "必须输入用户名");
if (getUpassword() == null || "".equals(getUpassword().trim()))
addFieldError("upassword", "必须输入密码");
}
public String execute() throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "pain", "123");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select *from reguser where user_name='"+this.uname+"' and user_password='"+this.upassword+"'");
try {
if(!rs.next()){
this.msg="用户名或密码不正确";
return "error";
}
else
return "success";
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
} 展开
4个回答
展开全部
select *from reguser where user_name,注意看,这里,*和from之间少了一个空格,导致rs里面是空的,那个try块里面会发生异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、在自定义验证方法validate()时,应先清空FieldError信息;
2、sql语句中有错误,*和from中间用空格隔开;
3、去掉try、catch语句,不要返回null;
4、关闭conn。
2、sql语句中有错误,*和from中间用空格隔开;
3、去掉try、catch语句,不要返回null;
4、关闭conn。
追问
去掉try catch 那这个函数头怎么写啊。 没有try 会报错的吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在JSP页面上通过账号密码两个文本框的name在servlet里面获得值对调用DAO 查询你的账号信息只要是不等于或者为空让他重定向到你的JSP 成功就接着走呗。要是不想的话用AJAX 对值判断也成但后返回到页面 写一个IF循环。 没什么难的啊就是查询加判断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
return "success";
上面写一行
this.msg="";
登陆成功后就将原来的报过错的清空下
上面写一行
this.msg="";
登陆成功后就将原来的报过错的清空下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询