JEE:如何停止 URL 映射?
JEE: How to stop URL mapping?
我正在尝试阻止 URL 映射。只有登录用户才能访问 welcome.jsp
页面。
我的Login.java
servlet如下,
package com.login;
import java.io.IOException;
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;
@WebServlet("/Login")
public class Login extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname=request.getParameter("uname");
String pass= request.getParameter("pass");
if(uname.equals("indrajith") && pass.equals("123")) {
HttpSession session =request.getSession();
session.setAttribute("username", uname);
response.sendRedirect("welcome.jsp");
}
else {
response.sendRedirect("login.jsp");
}
}
}
我的 login.jsp
页面包含以下表格,
<form action="Login">
Enter username:<input type="text" name="uname"><br>
Enter password:<input type="password" name="pass"><br>
<input type="submit" value="login">
<form>
在我的 welcome.jsp
页面中,我正在检查用户输入的数据是什么,
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
if(session.getAttribute("username")==null){
response.sendRedirect("login.jsp");
}
%>
welcome ${username}
</body>
</html>
但我的问题是,无论我是否登录,我仍然可以 URL 路由。我不知道我的代码有什么问题。在 Whosebug 中,有一些类似的问题,但答案并不能解决我的问题。
提前致谢!
PS: I'm using Tomcat 8.5.40 with eclipse IDE in my 64bit Windows machine.
您在 .jsp
中编写的所有内容都将添加到名为 _jspService()
的方法中(长话短说)。设置重定向url后,必须使用return
语句来阻止jvm执行剩下的代码
请记住,sendRedirect()
只是 jvm 的另一种方法,它在响应中添加了 Location
header。
更新您的 welcome.jsp
<%
if(session.getAttribute("username") == null){
response.sendRedirect("login.jsp");
return; // add this statement
}
%>
最好将此代码片段添加到页面顶部。
我正在尝试阻止 URL 映射。只有登录用户才能访问 welcome.jsp
页面。
我的Login.java
servlet如下,
package com.login;
import java.io.IOException;
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;
@WebServlet("/Login")
public class Login extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname=request.getParameter("uname");
String pass= request.getParameter("pass");
if(uname.equals("indrajith") && pass.equals("123")) {
HttpSession session =request.getSession();
session.setAttribute("username", uname);
response.sendRedirect("welcome.jsp");
}
else {
response.sendRedirect("login.jsp");
}
}
}
我的 login.jsp
页面包含以下表格,
<form action="Login">
Enter username:<input type="text" name="uname"><br>
Enter password:<input type="password" name="pass"><br>
<input type="submit" value="login">
<form>
在我的 welcome.jsp
页面中,我正在检查用户输入的数据是什么,
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
if(session.getAttribute("username")==null){
response.sendRedirect("login.jsp");
}
%>
welcome ${username}
</body>
</html>
但我的问题是,无论我是否登录,我仍然可以 URL 路由。我不知道我的代码有什么问题。在 Whosebug 中,有一些类似的问题,但答案并不能解决我的问题。
提前致谢!
PS: I'm using Tomcat 8.5.40 with eclipse IDE in my 64bit Windows machine.
您在 .jsp
中编写的所有内容都将添加到名为 _jspService()
的方法中(长话短说)。设置重定向url后,必须使用return
语句来阻止jvm执行剩下的代码
请记住,sendRedirect()
只是 jvm 的另一种方法,它在响应中添加了 Location
header。
更新您的 welcome.jsp
<%
if(session.getAttribute("username") == null){
response.sendRedirect("login.jsp");
return; // add this statement
}
%>
最好将此代码片段添加到页面顶部。