2014-12-23 2 views
-1

등록 된 회원 여부와 관계없이 전자 메일 및 암호의 유효성을 검사하는 데 문제가 있습니다. NetBeans를 사용하고 테이블이 members 인 데이터베이스를 만들었습니다. 연결 풀을 설정하고 멤버를 채 웁니다.사용자, 전자 메일 및 암호에 대한 유효성 검사가 작동하지 않습니다.

코드를 구현하고 오류를 해결 한 후 NetBeans 자습서에 대한 몇 가지 동영상을 본 후에도 내가 누락 된 부분을 파악할 수 없습니다. 나는 4 일 이후 거기에서 찔 렸고, 다소 잃어 버렸다. 너희들이 도와 주길 바래. 미리 감사해.

@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; 
    } 
} 

이 내가 글래스 피쉬 서버 로그 받고있다 :

이 내 LoginServlet의 코드가

# | id |  email  | password | name 
------------------------------------------------ 
1 | 1 | [email protected] | what | Number 1 
2 | 2 | [email protected] | fire | Number 2 

입니다 :

이 내 회원 테이블 데이터입니다

정보 : WEB0671 : [Project]의 [Project]로드 중
Info : 프로젝트가 286 밀리 초 안에 성공적으로 배포되었습니다.
정보 : WEB0671 : [프로젝트]/[프로젝트]에로드 중
정보 : 프로젝트가 247 밀리 초 내에 성공적으로 배포되었습니다.
정보 : 잘못된 사용자, 비밀번호 또는 이메일
정보 : 잘못된 사용자, 비밀번호 또는 이메일
경고 : 서블릿 org.jedlibrary에 대한의 Servlet.service() : StandardWrapperValve [org.jedlibrary.lola.loan.ValidationServlet] : PWC1406. lola.loan.ValidationServlet는 org.jedlibrary.lola.loan.ValidationServlet.doPost (ValidationServlet에서 org.apache.catalina.connector.ResponseFacade.sendRedirect (ResponseFacade.java:524)
에서 예외 java.lang.IllegalStateException 던져. java : 46) 에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:688) 에서 javax.servlet.http.HttpServlet.service (HttpServlet.java:770) at org.apach e.catalina.core.StandardWrapper.service (StandardWrapper.java:1550) org.apache.catalina.core.StandardContextValve에서 org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:281)
에서
. 호출 (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)
at com. com.sun.grizzly.http.ProcessorTask.invokeAdapter (ProcessorTask.java:860)에서 (프로세서 태스크.자바 : 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)
at com.sun.grizzly.ProtocolChainContextTask.doCall (ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call (Selection KeyContextTask.java:59) com.sun.grizzly.util.AbstractThreadPool $ Worker.doWork에서 com.sun.grizzly.ContextTask.run (ContextTask.java:71) 에서
(AbstractThreadPool.java:532)
에서 com.sun.grizzly.util.AbstractThreadPool $ Worker.run (AbstractThreadPool.java:513) java.lang.Thread.run (Thread.java:745)

가 작동하지 않습니다 물론
+0

[귀하의 문제는 IllegalStateException입니다.] (https://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/connector/ResponseFacade.html#sendRedirect%28java.lang.String%29). – Tom

+0

고마워요.하지만 톰이 제가 주석을 달면, 성공했는지 실패했는지 계속 빈 페이지를 보여줄 것입니다. – user3127380

답변

관련 문제