2017-07-25 99 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如果问题解决了,请将其标记为已解决。 –