2017-07-25 81 views
1

嗨我用servlet做了簡單的Web應用程序,根據可用會話提供登錄和歡迎頁面。我已經連接了下面的代碼,重定向到servlet中的根URL

每當用戶鍵入URL http://localhost:8888/,他必須要到dashboard的servlet(如web.xml提)

dashboard servlet其中會話檢查

如果會話是可用的,那麼我將成爲welcome.html頁面, 否則我重定向到login servlet

login servlet

GET方法, 如果用戶有我重定向到dashboard servlet 否則會議上,我將轉發welcome.html頁面

用戶進入後的信息,將發佈信息所述login servlet(即,POST)

POST方法, 我會得到來自請求的用戶名和密碼,我將檢查值是adminpassword

如果這是真的創建一個會話,將用戶重定向到dashboard servlet 否則我將用戶重定向到login servlet(GET方法)

Web應用程序應該需要有隻有這2個網址,

(1)http://localhost:8888/ (2)http://localhost:8888/login

用戶應該不知道我服他們網頁的類型(HTML或JSP),但我要爲只有HTML頁面(這是我的要求)

當我啓動應用程序引擎,起初請求發送到儀表板,然後它會被重定向到login servlet但後來它的製作迴路儀表盤再次

我用System.out.println()跟蹤控制我的輸出是

The admin console is running at http://localhost:8888/_ah/admin 
Jul 25, 2017 11:12:55 AM com.google.appengine.tools.development.DevAppServerImpl doStart 
INFO: Dev App Server is now running 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 
login servlet get method 
request no session 
-->dashboard servlet 
get method 
no session, 

問題:

如何才能解決這個問題呢?

如果我更改了web.xml URL模式爲<url-pattern>/index</url-pattern>和徘徊無論重定向到/我改/indexdashboard servlet它工作正常,但我怎麼能使用的「/」的servlet的servlet的

我已附加下面的源代碼,

儀表盤的servlet

包的servlet;

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

@SuppressWarnings("serial") 
public class DashboardServlet extends HttpServlet { 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     System.out.println("-->dashboard servlet"); 
     System.out.println("get method"); 
     HttpSession session = req.getSession(false); 
     if (session != null) {   
      System.out.println("session is available"); 
      req.getRequestDispatcher("/WEB-INF/welcome.html").forward(req, resp); 
     } else { 
      System.out.println("no session,"); 
      resp.sendRedirect("/login"); 
     } 
    } 
} 

登錄的Servlet

package servlet; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

@SuppressWarnings("serial") 
public class LoginServlet extends HttpServlet { 
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     System.out.println("-->>>login servlet post method"); 
     String name = req.getParameter("username"); 
     String password = req.getParameter("password"); 
     if (name.equals("admin") && password.equals("password")) { 
      HttpSession session = req.getSession(); 
      session.setAttribute("sessionUserName", name); 
      resp.sendRedirect("/"); 

     } else { 
      resp.sendRedirect("/login"); 
     } 
    } 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

     System.out.println("login servlet get method"); 
     HttpSession session = req.getSession(false); 
     if (session != null) { 
      System.out.println("request with session"); 
      resp.sendRedirect("/"); 
     } else { 
      System.out.println("request no session"); 
      req.getRequestDispatcher("/WEB-INF/login.html").forward(req, resp); 
     } 

    } 
} 

的web.xml

<web-app> 
    <servlet> 
     <servlet-name>Login</servlet-name> 
     <servlet-class>servlet.LoginServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Login</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>Dashboard</servlet-name> 
     <servlet-class>servlet.DashboardServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Dashboard</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 

的AppEngine-web.xml中

<?xml version="1.0" encoding="utf-8"?> 
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
    <application></application> 
    <version>1</version> 
    <threadsafe>true</threadsafe> 
    <system-properties> 
     <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" /> 
    </system-properties> 
    <sessions-enabled>true</sessions-enabled> 
</appengine-web-app> 

的login.html

<!DOCTYPE html> 
<html> 
<head> 
<title>Insert title here</title> 
</head> 
<body> 
    <form action="/login" method="post"> 
     User name :<input type='text' name='username'>Password :<input 
      type='password' name='password'><input type='submit' 
      value='Submit'> 
    </form> 
</body> 
</html> 

welcome.html

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body>welcome here 
</body> 
</html> 

謝謝

回答

1

你不應該檢查會話只是否爲空。你應該把像'logged_in'這樣的值作爲屬性放入會話中。然後,控制它決定在哪裏路線。

更新:

作爲一個快速解決方案,裏面LoginServlet航線的doGet到doPost方法和如下改變的doPost:

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

     System.out.println("login servlet get method"); 
     HttpSession session = req.getSession(false); 
     if (session != null && session.getAttribute("sessionUserName")!=null) { 
      System.out.println("request with session"); 
      resp.sendRedirect("/"); 
     } else { 

      String name = req.getParameter("username"); 
      String password = req.getParameter("password"); 
      if (name.equals("admin") && password.equals("password")) { 
       session = req.getSession(); 
       session.setAttribute("sessionUserName", name); 
       resp.sendRedirect("/"); 

      } else { 
       System.out.println("request no session"); 
       req.getRequestDispatcher("/WEB-INF/login.html").forward(req, resp); 
      } 

     } 

    } 
+0

是,即使我試圖與會話屬性中,如果條件('如果(會話! = null && session.getAttribute(「sessionUserName」)。equals(「admin」))')它給出了相同的結果@yılmaz – Prakash

+1

@Prakash答案編輯。 –

+0

@Prakash如果問題解決了,請將其標記爲已解決。 –