【发布时间】:2016-11-23 16:39:42
【问题描述】:
我有一个 login.html 、 LoginServlet 和 home.jsp。但是在重定向到 home.jsp 时,我得到这个 URL 不支持 HTTP 方法 POST 。当我尝试定向到 html 页面时,它工作正常。问题只是在引导jsp页面。请指教。
登录.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 ?你能添加它的代码吗?
-
@javaguy 我已经添加了 web.xml 文件。
-
我试过你的核心代码。有用。这是重新发布、同步、部署的所有内容吗?你确定你转发到正确的文件吗?您可以尝试更改 login.html 以使用 get?那么前锋工作了吗?在 if(status) 块之前是否有任何其他重定向(在未显示的代码中)?只尝试 doPost 中的行:request.getRequestDispatcher("home.jsp").forward(request, response);
-
@code_angel 我试过了,但它不起作用。如果我尝试创建其他 testapp 并遇到相同的问题。