【JSP】“不同角色登录,返回对应角色的登录成功界面”问题

「已注销」 2015-12-26 05:27:42
package myservlet;
import mybean.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class IsLogin extends HttpServlet{
public void init(ServletConfig config) throws ServletException{
super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
//接收参数
String user=request.getParameter("user");
String password=request.getParameter("password");
String actor=request.getParameter("actor");
//加载驱动,建立连接
Connection con;
Statement sql;
ResultSet rs;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch(Exception e){
System.out.print(e);
}

try{
String uri="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=student";
con=DriverManager.getConnection(uri,"sa","940712"); //数据库的登录名 sa 940712
sql=con.createStatement();
//通过if语句判断角色,将其账号密码与数据库的userInf内的信息进行比对(角色的账号密码统一存储在UserInf表中)
//若正确,转发至角色对应的登录成功界面;若没有,统一转发至出错界面,提供返回链接供重新登录
if(actor=="student"){
rs=sql.executeQuery("select userIs,password from userInf where actor='student'");
while(rs.next()){
if(user==rs.getString(1) && password==rs.getString(2)){
RequestDispatcher dispatcher=request.getRequestDispatcher("loginSuccessS.jsp");
dispatcher.forward(request,response);
}
}
RequestDispatcher dispatcher=request.getRequestDispatcher("loginError.jsp");
dispatcher.forward(request,response);
}

else if(actor=="teacher"){
rs=sql.executeQuery("select userIs,password from userInf where actor='teacher'");
while(rs.next()){
if(user==rs.getString(1) && password==rs.getString(2)){
RequestDispatcher dispatcher=request.getRequestDispatcher("loginSuccessT.jsp");
dispatcher.forward(request,response);
}
}
RequestDispatcher dispatcher=request.getRequestDispatcher("loginError.jsp");
dispatcher.forward(request,response);
}

else if(actor=="admin"){
rs=sql.executeQuery("select userIs,password from userInf where actor='admin'");
while(rs.next()){
if(user==rs.getString(1) && password==rs.getString(2)){
RequestDispatcher dispatcher=request.getRequestDispatcher("loginSuccessA.jsp");
dispatcher.forward(request,response);
}
}
RequestDispatcher dispatcher=request.getRequestDispatcher("loginError.jsp");
dispatcher.forward(request,response);
}
}catch(SQLException e){
//System.out.print("您的账号或密码错误,请返回重新输入");
RequestDispatcher dispatcher=request.getRequestDispatcher("loginError.jsp");
dispatcher.forward(request,response);
}
}
}


开始的时候是把参数简单的设置成数据库的登录名字和密码,通过
con=DriverManager.getConnection(uri,user,password);

接收参数登录,这样虽然能登录成功指向登录成功的jsp页面,但是没办法判断究竟是哪一种角色

后来做了调整,通过字符串比对参数actor判断是哪个角色,然后进入对应角色的登录界面,不过这样不管选哪个角色,只要数据库中有相应的登录名和密码,都能登录成功。就会出现选择老师角色,输入学生的账号密码也能登录成功。(这是理想情况,现实情况是并无卵用,输入正确的账号密码也只能返回一个空!界!面!了,就是挂了的意思)

最后看网上有人通过在数据库中建立一张表,单独存储用户账号密码信息,接收参数比对表中数据,感觉这种行的来。于是就做了这个,然后效果就是和第二次差不多,提交数据之后只能返回一个空白的网页。

感觉应该是从第30行那出了问题,就是不知道怎么处理数据库的东西,是不是忽略了rs.next()的生存周期什么,
纯小白一枚,求大神指点指点。
...全文
6551 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35807925 2017-02-20
  • 打赏
  • 举报
回复
一个后台管理(WEB)项目,根据员工姓名、密码、职务(匹配ORCL数据库),其中又根据职务的不同登录进入不同的界面(jsps)。初学者 求大神解决

嗨疯子 2015-12-29
  • 打赏
  • 举报
回复
按照你现在的思路,你可以在你的用户表中加一个字段,staste 设置1为超级管理员 2为普通用户 然后当登陆判断用户账号密码是否正确的时候,将用户信息查询出来存储到session中,写判断 if(staste =1)时 跳转某一个页面, 你可以先把逻辑写了然后对应着静态页面查看是否跳转成功,然后再往页面赋值。
hersing 2015-12-29
  • 打赏
  • 举报
回复
一般数据库结构是这么设计,人物关联角色,角色关联权限,这样你根据帐号密码就可以查询出该人物拥有的角色了,就好判断了
「已注销」 2015-12-29
  • 打赏
  • 举报
回复
引用 7 楼 xiesq5112 的回复:
都说结帖率为0的就不用回复了。 都说来蹭蹭就走了。
哈哈哈哈我来结贴了!
「已注销」 2015-12-29
  • 打赏
  • 举报
回复
引用 2 楼 wang623145708 的回复:
你可以建一个角色可以访问的模块字段,通过模块字段来判断
后来发现只是一个equals()方法与==的区别问题
「已注销」 2015-12-29
  • 打赏
  • 举报
回复
前几天已经解决这个问题了,其实是个很小的错误。 while循环内的if判断里, 只需要把 == 改成 .equals()方法就ok了。不然每次if都不会执行,而且程序还不报错。真是x了狗了。哈哈哈 看了五楼的回复,大概就是那个样子,谢谢大家的解答
心随自在飞 2015-12-29
  • 打赏
  • 举报
回复
都说结帖率为0的就不用回复了。 都说来蹭蹭就走了。
Simba_cheng 2015-12-29
  • 打赏
  • 举报
回复
五楼应该解释的比较清楚了.. 给登录的User表加一个字段(角色),用户名和密码对了以后,判断该字段(角色)是什么,然后, 根据不同的角色跳转不同的页面... 配合Struts2 应该不是很麻烦..
  • 打赏
  • 举报
回复
不太清楚楼主是如何设计userInf 这个表的 。 我姑且就当这些字段的意思是userIs【账户】,password【密码】,actor【角色】 楼主应该是想完成 登陆是否成功,然后判断角色进入不同的页面。 先捋清业务逻辑: 用户登陆系统----》判断是否有该账户----》若成功返回该账户所对应的角色页面 |__》不成功则返回登陆页面 然后才开始考虑代码:给出伪代码
String username = 获取输入的用户名;
String password = 获取输入的密码;

链接数据库
Connection con = 获取数据库链接;

statement st = con.createstatement();

resultset  rs = st.executequery("  查询用户的信息   from  表    where    用户名=  username   and  密码 = password ");

if(rs.next()){//如找到了  且为唯一一条  则查看该用户的角色
   String actor =  rs.getString("actor");
   根据actor来判断分发跳转到具体的页面
  if(actor.equals("xxx")){
       //跳转一个页面
    }  else{
       //跳转另一个页面
   }
}
  • 打赏
  • 举报
回复
你可以建一个角色可以访问的模块字段,通过模块字段来判断
「已注销」 2015-12-26
  • 打赏
  • 举报
回复
是分数给的太少吗,求解答啊,如果分数少我可以把全部都给你们啊

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧