【发布时间】:2014-12-23 09:43:36
【问题描述】:
我在验证电子邮件和密码时遇到问题,无论它是否属于注册会员。我正在使用 NetBeans,并使用表 members 创建了一个数据库。我已经建立了连接池并填写了我的成员表。
在实现了代码、解决了错误并观看了一些有关 NetBeans 教程的视频之后,我仍然无法弄清楚我在哪里错过了它。我被困在那里 4 天了,现在有点迷路了。希望大家能帮帮我,先谢谢了。
这是我的成员表数据:
# | id | email | password | name
------------------------------------------------
1 | 1 | what@what.com | what | Number 1
2 | 2 | fireup@fire.com | fire | Number 2
这是我的 LoginServlet 的代码:
@WebServlet("/login")
public class LoginServlet extends HttpServlet{
@Resource(name = "jdbc/jed")
private DataSource dsMembers;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String strName = request.getParameter("memberName");
String strPassword = request.getParameter("memberPassword");
String strEmail = request.getParameter("memberEmail");
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = dsMembers.getConnection();
String sql = "SELECT * FROM members";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()){
if((isValidEmail(strEmail))&& (strEmail.equals(rs.getString("email")))&& (strPassword.equals(rs.getString("password")))&&(strName.equals(rs.getString("name")))){
System.out.println("Success");
HttpSession session = request.getSession();
session.setAttribute("name", strName);
session.setAttribute("email", strEmail);
response.sendRedirect(this.getServletContext().getContextPath() + "/account.jsp");
}
else {
request.getSession().invalidate();
response.sendRedirect(this.getServletContext().getContextPath());
}
}
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
}
}
private boolean isValidEmail(String strEmail){
if(strEmail.matches("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$"))
return true;
return false;
}
}
这是我得到的 GlassFish Server 日志:
信息:WEB0671:在 [/Project] 处加载应用程序 [Project]
信息:项目在 286 毫秒内成功部署。
信息:WEB0671:在 [/Project]
加载应用程序 [Project] 信息:项目在 247 毫秒内成功部署。
信息:无效的用户、密码或电子邮件
信息:无效的用户、密码或电子邮件
警告:StandardWrapperValve [org.jedlibrary.lola.loan.ValidationServlet]:PWC1406:Servlet org.jedlibrary.lola.loan.ValidationServlet 的 Servlet.service() 抛出异常 java.lang.IllegalStateException 在 org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:524)
在 org.jedlibrary.lola.loan.ValidationServlet.doPost(ValidationServlet.java:46) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:688) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:770) 在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
在 com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
在 java.lang.Thread.run(Thread.java:745)
【问题讨论】:
-
谢谢汤姆,但如果我把它注释掉,无论成功还是失败,它都会一直显示空白页面
标签: java database validation jakarta-ee servlets