Java 表单提交在servlet应用程序中不起作用
下面是web.xml、servlet和jsp代码Java 表单提交在servlet应用程序中不起作用,java,servlets,Java,Servlets,下面是web.xml、servlet和jsp代码 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MyServlet
*/
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String userName = request.getParameter("userName");
PrintWriter out = response.getWriter();
out.println("hello "+userName+" how are you ?");
}
}
JSPCode:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
This is First Servlet
<form action="firstTest">
<table>
<tr>
<td>Username:</td>
<td><input type="text" name="userName"/></td>
</tr>
<tr>
<td> Password:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="2"><input name = "sumbit "type="submit" /></td>
</tr>
</table>
</form>
</body>
</html>
在此处插入标题
这是第一个Servlet
用户名:
密码:
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_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Trial</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/firstTest</url-pattern>
</servlet-mapping>
</web-app>
试验
index.html
第一个servlet
MyServlet
第一个servlet
/第一次测试
当我给出URL http:localhost:8080/Trial时,Index.jsp即将出现,但当我给出用户名和密码时,URL将更改为http:localhost:8080/firstTest,而不是http:localhost:8080/Trial/firstTest,并且我收到405错误“Tomcat错误http状态405-此URL不支持http方法GET”我的代码有什么错误吗
protected void doGost
更改为doPost或doGet…在jsp代码表单标记中,您没有指定方法名称,默认情况下它使用GET方法,因此只需替换此代码,我希望它可以工作:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("userName");
PrintWriter out = response.getWriter();
out.println("hello " + userName + " how are you ?");
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
为了在部署到服务器之前解决此类键入错误 我们使用@override注释来测试该方法是否为重载方法。当您编译java时,它将抛出异常。实际上,编译器将检查语法错误等。但在这种情况下,编译器处理的doGost()也是一种在编译级别使用上述注释的方法,只有开发人员才能理解问题发生的位置
所以。我的建议是重写方法的@override 你写的是doGost而不是doGetHahaha,这太棒了。我们都去过那里。