2016-07-02 5 views
-1

サーブレットのログインシステムに問題があります。 ログインボタンをクリックするとDoLoginServletが実行され、DBにアクセスしてログインを確認してからuserInfoView.jspにリダイレクトします。 ボタンをクリックするとエラーが表示されます。サーブレットのログインシステム

ホームページ:

<a href="${pageContext.request.contextPath}/MyJsps/login.jsp" target="_blank"><img src="<c:url value="/images/login1.png"/>" 

ログインページのindex.jsp:login.jspを

<%@ page language="java" contentType="text/html; charset=windows-1256" 
     pageEncoding="windows-1256"%> 
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
    <!DOCTYPE html> 
    <!--[if lt IE 7 ]> <html lang="en" class="no-js ie6 lt8"> <![endif]--> 
    <!--[if IE 7 ]> <html lang="en" class="no-js ie7 lt8"> <![endif]--> 
    <!--[if IE 8 ]> <html lang="en" class="no-js ie8 lt8"> <![endif]--> 
    <!--[if IE 9 ]> <html lang="en" class="no-js ie9"> <![endif]--> 
    <!--[if (gt IE 9)|!(IE)]><!--> 
    <html lang="en" class="no-js"> 
    <!--<![endif]--> 
    <head> 
    <meta charset="UTF-8" /> 
    <!-- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> --> 
    <title>Login and Registration</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="description" 
     content="Login and Registration Form with HTML5 and CSS3" /> 
    <meta name="keywords" 
     content="html5, css3, form, switch, animation, :target, pseudo-class" /> 
    <meta name="author" content="Codrops" /> 
    <link rel="shortcut icon" href="<c:url value="../favicon.ico"/>"> 
    <link rel="stylesheet" type="text/css" 
     href="<c:url value="/css/demo.css"/>" /> 
    <link rel="stylesheet" type="text/css" 
     href="<c:url value="/css/style.css"/>" /> 
    <link rel="stylesheet" type="text/css" 
     href="<c:url value="/css/animate-custom.css"/>" /> 
    </head> 
    <body> 
     <div class="container"> 
      <!-- Codrops top bar --> 
      <!--/ Codrops top bar --> 

      <header> 
       <nav class="codrops-demos"></nav> 
      </header> 

      <section> 
       <div id="container_demo"> 
        <!-- hidden anchor to stop jump http://www.css3create.com/Astuce-Empecher-le-scroll-avec-l-utilisation-de-target#wrap4 --> 
        <a class="hiddenanchor" id="toregister"></a> <a class="hiddenanchor" 
         id="tologin"></a> 

        <div id="wrapper"> 

         <div id="login" class="animate form"> 
          <form method="POST" action="/doLogin" autocomplete="on"> <!-- here--!> 
           <h1>Log in</h1> 
           <p> 
            <label for="username" class="uname" data-icon="u"> Your 
             email</label> <input id="username" name="username" required 
             type="email" placeholder="eg. /////@gmail.com" /> 
           </p> 
           <p> 
            <label for="password" class="youpasswd" data-icon="p"> 
             Your password </label> <input id="password" name="password" required 
             type="password" placeholder="eg. X8df!90EO" /> 
           </p> 
           <p class="keeplogin"> 
            <input type="checkbox" name="loginkeeping" id="loginkeeping" 
             value="loginkeeping" /> <label for="loginkeeping">Keep 
             me logged in</label> 
           </p> 
           <p class="login button"> 
            <input type="submit" value="Login" /> 
           </p> 
           <p class="change_link"> 
            Not a member yet ? <a href="#toregister" class="to_register">Join 
             us</a> 
           </p> 
          </form> 
         </div> 

DoLoginServletクラス:

package com.magician.project.servlets; 

import java.io.IOException; 
import java.sql.Connection; 
import java.sql.SQLException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import com.magician.project.beans.UserAccount; 
import com.magician.project.utils.DBUtils; 
import com.magician.project.utils.MyUtils; 



@WebServlet(name = "doLogin",urlPatterns = { "/doLogin" }) 
public class DoLoginServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public DoLoginServlet() { 
     super(); 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     String userName = request.getParameter("userName"); 
     String password = request.getParameter("password"); 
     String rememberMeStr = request.getParameter("loginkeeping"); 
     boolean remember= "Y".equals(rememberMeStr); 


     UserAccount user = null; 
     boolean hasError = false; 
     String errorString = null; 

     if (userName == null || password == null 
       || userName.length() == 0 || password.length() == 0) { 
      hasError = true; 
      errorString = "Required username and password!"; 
     } else { 
      Connection conn = MyUtils.getStoredConnection(request); 
      try { 

       user = DBUtils.findUser(conn, userName, password); 

       if (user == null) { 
        hasError = true; 
        errorString = "User Name or password invalid"; 
       } 
      } catch (SQLException e) { 
       e.printStackTrace(); 
       hasError = true; 
       errorString = e.getMessage(); 
      } 
     } 

     // If error, forward to /login.jsp 
     if (hasError) { 
      user = new UserAccount(); 
      user.setUserName(userName); 
      user.setPassword(password); 


      // Store information in request attribute, before forward. 
      request.setAttribute("errorString", errorString); 
      request.setAttribute("user", user); 


      // Forward to login.jsp 
      RequestDispatcher dispatcher= this.getServletContext().getRequestDispatcher("/MyJsps/login.jsp"); 
      dispatcher.forward(request, response); 
     } 

     // If no error 
     // Store user information in Session 
     // And redirect to userInfo page. 
     else { 
      HttpSession session = request.getSession(); 
      MyUtils.storeLoginedUser(session, user); 

      // If user checked "Remember me". 
      if(remember) { 
       MyUtils.storeUserCookie(response,user); 
      } 

      // Else delete cookie. 
      else { 
       MyUtils.deleteUserCookie(response); 
      }      

      // Redirect to userInfo page. 
      response.sendRedirect(request.getContextPath() + "/MyJsps/userInfoView.jsp"); 
     } 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     doGet(request, response); 
    } 

} 

もう一つの問題: と私は、ログインサーブレットを実行する方法login.jspではなく、ホーム・ページからのクラス。 次に、サーブレットを使用してlogin.jspを実行します。

ログインサーブレットクラス:

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet(name = "login",urlPatterns = { "/login"}) 
public class LoginServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public LoginServlet() { 
     super(); 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 


     // Forward to /loginView.jsp   
     RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/MyJsps/login.jsp"); 

     dispatcher.forward(request, response); 

    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     doGet(request, response); 
    } 

} 

答えて

1

最初の質問:

<form method="POST" action="/doLogin" autocomplete="on"> 

変更それに:

<form method="GET" action="${pageContext.request.contextPath}/doLogin" autocomplete="on"> 

2番目の質問: コールのログインサーブレット

<a href="${pageContext.request.contextPath}/login" target="_blank"><img src="<c:url value="/images/login1.png"/>" 
+0

あなたの最初のヘルプは動作しません。秒の1つの仕事good.canあなたは/ログインはサーブレットのURLです教えてください? – Magician

+0

答えは編集されます ここを見てくださいhttp://www.codejava.net/java-ee/servlet/webservlet-annotation-examples – Taha