【发布时间】:2017-12-30 22:20:57
【问题描述】:
您好,我使用 servlet 做了简单的 Web 应用程序,根据可用的会话提供登录和欢迎页面。我附上了下面的代码,
每当用户键入 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 方法,
我将从请求中获取用户名和密码,我将检查值为admin 和password
如果是真的创建一个会话并将用户重定向到dashboard servlet
否则我会将用户重定向到login servlet(GET 方法)
web 应用程序应该只需要这 2 个 URL,
(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> 并在 servlet 中重定向到 / 我更改为 /index 对于 dashboard 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>
谢谢,
【问题讨论】:
标签: java html google-app-engine servlets url-redirection