我有一个login.html,LoginServlet和home.jsp。但是,当重定向到home.jsp时,我得到HTTP方法POST不受此URL支持。当我尝试导向到html页面时,它工作正常。问题只在于指导jsp页面。请咨询。Java servlets:HTTP方法POST在访问JSP页面时不受此URL支持
的login.html
<form action="./LoginServlet" method="post">
<div class ="login">
<label><b>User Name</b></label>
<input type="text"name="name"placeholder="UserName" onclick=""required><br/>
<label><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="password" required>
<button type="submit">Login</button>
<input type="checkbox"checked="checked">Remember me
</div>
</form>
下面是我的LoginServlet
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginServlet() {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Initial setting
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//Gather data
String name= request.getParameter("name");
String password = request.getParameter("password");
try {
boolean status =LoginDao.validateUser(name, password);
if(status){
HttpSession session = request.getSession();
session.setAttribute("name", name);
//response.sendRedirect("home.jsp");
RequestDispatcher rd=request.getRequestDispatcher("home.jsp");
rd.forward(request,response);
}
else{
out.println("<head>");
out.println("<body>");
out.println("<h1>Sorry username or password error</h1>");
RequestDispatcher rd=request.getRequestDispatcher("login.html");
rd.include(request,response);
out.println("</body>");
out.println("</head>");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
下面是针对home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome To UTS</title>
</head>
<body>
<div class="header">
<header><b>Welcome to UTS</b></header>
<nav>
<ul>
<li><a href="home.jsp">Home</a></li>
<li><a href="linux.jsp">Linux</a></li>
<li><a href="risc.jsp">Risc</a>
</ul>
</nav>
</div>
web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>UTS</display-name>
<welcome-file-list>
<welcome-file>login.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>LoginServlet</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.fidelity.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>SignupServlet</display-name>
<servlet-name>SignupServlet</servlet-name>
<servlet-class>com.fidelity.SignupServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SignupServlet</servlet-name>
<url-pattern>/SignupServlet</url-pattern>
</servlet-mapping>
</web-app>
你在哪里映射URL? web.xml或@Webservlet?你可以为它添加代码吗? – developer
@javaguy我已经添加了web.xml文件。 – shankar
我试过你的代码的核心。有用。这是一切重新发布,同步,部署?你确定你转发到正确的文件?您可以尝试更改login.html以使用get?那么这是前瞻性的工作吗? if(状态)块之前是否有其他重定向(未显示代码)?试试你的doPost中的行:request.getRequestDispatcher(“home.jsp”)。forward(request,response); –