重定向到servlet中的根URL [英] Redirecting to the root URL in servlet

查看:142
本文介绍了重定向到servlet中的根URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我使用servlet实现了简单的Web应用程序,以基于可用会话提供登录和欢迎页面。每当用户输入URL http:// localhost:8888 / 时,我附加了下面的代码,

他必须转到仪表板 servlet(如 web.xml 中所述)



仪表盘servlet 中,检查会话

如果会话可用,那么我将服务 welcome.html 页面,
,否则我将重定向到登录servlet $ b

登录servlet 中,



GET 方法,
如果用户有会话我重定向到仪表盘servlet
else我会在用户输入信息后转发 welcome.html 页面



它会将信息发布到登录servlet (即POST)。

POST 方法,
我会从请求中获取用户名和密码,我会检查值是 admin password



如果它为true创建一个会话并将用户重定向到 dashboard servlet code>
else我将把用户重定向到登录servlet (GET方法)



web应用程序应该只有这2个URL,

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



用户不应该知道我为他们服务的页面的类型(html或jsp),但我只需要提供HTML页面(这是我的要求)



当我启动应用程序引擎时,At首先将请求发送至仪表板,然后将其重定向至登录servlet ,然后再次为仪表板创建循环,



我使用 System.out.println()跟踪控件输出结果是

 管理控制台正在运行在http:// localhost:8888 / _ah / admin 
Jul 25,2017 11:12:55 AM com.google.appengine.tools.development.DevAppSer verImpl doStart
INFO:Dev App Server现在正在运行
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >短划线board servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
没有会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet让我thod
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法d
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无session,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求no session
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
logi n servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无session,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求no session
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板服务器t
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
no会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- > ;仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
没有会话,
登录servlet get方法
请求没有会话
- >仪表板servlet
get方法
没有会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- - >仪表板servlet
get方法
无会话,
登录servlet get方法
re quest no session
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
no会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- > ;仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
没有会话,
登录servlet get方法
请求没有会话
- >仪表板servlet
get方法
没有会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无ssion,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- > ;仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
没有会话,
登录servlet get方法
请求没有会话
- >仪表板servlet
get方法
没有会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- - >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
没有会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet ge t方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无session,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get m ethod
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无session,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求no session
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get方法
无会话,
登录servlet get方法
请求no ses sion
- >仪表板servlet
get方法
无会话,
登录servlet get方法
请求无会话
- >仪表盘servlet
get method
no session,




问题:

如何解决这个问题?

如果我将 web.xml 中的url模式更改为< url-pattern> / index< / url-pattern> ,并且在重定向到 / 的servlet中,我更改为 / index 对于 dashboard servlet 它工作正常,但我怎样才能使用servlet的/?

我附上了下面的源代码,

dashboard 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 DashboardServlet extends HttpServlet {$ b $ public void doGet(HttpServletRequest req,HttpServletResponse resp)抛出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);




$ b

登录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 {$ b $ public void doPost(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
// TODO自动生成方法存根
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);


$ b $ 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>登录< / servlet-name>
< servlet-class> servlet.LoginServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name>登录< / servlet-name>
< url-pattern> / login< / url-pattern>
< / servlet-mapping>

< servlet>
< servlet-name>仪表板< / servlet-name>
< servlet-class> servlet.DashboardServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name>仪表板< / servlet-name>
< url-pattern> /< / url-pattern>
< / servlet-mapping>
< / web-app>

appengine-web.xml

 <?xml version =1.0encoding =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.filevalue =WEB-INF / logging.properties/>
< / system-properties>
<会话启用>真实< /会话启用>
< / appengine-web-app>

login.html

 <!DOCTYPE html> 
< html>
< head>
< title>在此插入标题< / title>
< / head>
< body>
< form action =/ loginmethod =post>
用户名:< input type ='text'name ='username'>密码:< input
type ='password'name ='password'>< input type ='submit '
value ='提交'>
< / form>
< / body>
< / html>

welcome.html

 <!DOCTYPE html> 
< html>
< head>
< meta charset =ISO-8859-1>
< title>在此插入标题< / title>
< / head>
< body>欢迎在这里
< / body>
< / html>

谢谢,

解决方案

您不应仅检查会话是否为空。你应该把像'logged_in'这样的值作为属性放入会话中。然后,控制它决定在哪里路由。



更新:

作为一种快速解决方案, LoginServlet 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);
}

}

}


Hi I did simple web application with servlet, to serve login and welcome page based on the session available. I had attached the code below,

whenever the user types the URL http://localhost:8888/, he must take to the dashboard servlet (as mention in the web.xml)

In the dashboard servlet, where session is checked

if the session is available, then I will serve welcome.html page, else I redirect to login servlet

In the login servlet,

GET method, if the user have the session I redirect to the dashboard servlet else I will the forward the welcome.html page

after user entry the information, it will post the information to the login servlet (i.e., POST)

POST method, I will get the username and password from the request, I will check value is admin and password

if it is true create a session and redirect the user to the dashboard servlet else I will redirect the user to the login servlet(GET Method)

web application should need to have only these 2 URL,

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

user should not aware of the type of page I am serving to them(html or jsp) but I need to serve HTML page only(this my requirement)

when I start the app engine, At first the request send to dashboard then it is redirected to the login servlet but then its making loop for the dashboard once again,

I used System.out.println() to track the control my output is

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,

QUESTION:

How can solve this problem?

If I change url pattern in web.xml as <url-pattern>/index</url-pattern> and in the servlet whereever redirection to the / I changed to /index for the dashboard servlet it is working fine, but how can I make use of the "/" for servlet

I have attached the source code below,

dashboard 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 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");
        }
    }
}

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>

Thank you,

解决方案

You should not check only whether session is null. You should put a value like 'logged_in' into session as attribute. Then, control it for deciding where to route.

Update:

As a quick solution, route doGet inside LoginServlet to doPost and change doPost as below:

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

        }

    }

这篇关于重定向到servlet中的根URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆