修复 JDBC 在动态 web 项目中的问题
Fix JDBC in dynamic web project
我正在尝试通过 servlet 检查数据库中的数据,但是 html 页面没有读取 servlet 页面..
错误:
The origin server did not find a current representation for the target
resource or is not willing to disclose that one exists.
我的登录页面:
<form action="validate" method="Post">
User name:
<br>
<input type="text" name="username">
<br>
User password:
<br>
<input type="password" name="psw">
<input type="submit" value="Submit">
</form>
我的 serlvlet 代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.SetContenttype("text/html");
String uname = request.getParameter("username");
String password = request.getParameter("psw");
Class.forName("com.mysql.jdbc.Driver");
Connection Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", "1234");
PreparedStatement pstmt = Con.prepareStatement("SELECT * FROM data WHERE username = ? AND password = ?");
pstmt.setString(1, uname);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
System.out.println("record found");
RequestDispatcher rd = request.getRequestDispatcher("Stu.jsp");
rd.forward(request, response);
} else {
System.out.println("record not found");
RequestDispatcher rd = request.getRequestDispatcher("Login.html");
rd.forward(request, response);
}
rs.close();
pstmt.close();
Con.close();
doGet(request, response);
}
在您的登录页面中,您应该指定
<form action="/LoginServlet" method="post">
同时检查您是否在 web.xml 中指定了 servlet 映射或使用 class 注释您的 servlet
@WebServlet("/LoginServlet")
<servlet>
<servlet-name>servletname</servlet-name>
<servlet-class>/LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletname</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
希望对您有所帮助!
当操作找不到指定的 servlet 时,就会出现此问题,它可能会引起很多反应。
请检查您的@WebServlet 注释,它可能是
@WebServlet(名称="validate")
类似的东西,你必须给它
@WebServlet(urlPatterns = "/validate")
,或者你可以使用
@WebServlet("/validate")
您可以在操作部分的表单中添加其他问题
<form action="${requestScope.getContextPath}/validate" method="Post">
希望我能有所帮助。
我正在尝试通过 servlet 检查数据库中的数据,但是 html 页面没有读取 servlet 页面..
错误:
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
我的登录页面:
<form action="validate" method="Post">
User name:
<br>
<input type="text" name="username">
<br>
User password:
<br>
<input type="password" name="psw">
<input type="submit" value="Submit">
</form>
我的 serlvlet 代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.SetContenttype("text/html");
String uname = request.getParameter("username");
String password = request.getParameter("psw");
Class.forName("com.mysql.jdbc.Driver");
Connection Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", "1234");
PreparedStatement pstmt = Con.prepareStatement("SELECT * FROM data WHERE username = ? AND password = ?");
pstmt.setString(1, uname);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
System.out.println("record found");
RequestDispatcher rd = request.getRequestDispatcher("Stu.jsp");
rd.forward(request, response);
} else {
System.out.println("record not found");
RequestDispatcher rd = request.getRequestDispatcher("Login.html");
rd.forward(request, response);
}
rs.close();
pstmt.close();
Con.close();
doGet(request, response);
}
在您的登录页面中,您应该指定
<form action="/LoginServlet" method="post">
同时检查您是否在 web.xml 中指定了 servlet 映射或使用 class 注释您的 servlet @WebServlet("/LoginServlet")
<servlet>
<servlet-name>servletname</servlet-name>
<servlet-class>/LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletname</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
希望对您有所帮助!
当操作找不到指定的 servlet 时,就会出现此问题,它可能会引起很多反应。
请检查您的@WebServlet 注释,它可能是
@WebServlet(名称="validate")
类似的东西,你必须给它
@WebServlet(urlPatterns = "/validate")
,或者你可以使用
@WebServlet("/validate")
您可以在操作部分的表单中添加其他问题
<form action="${requestScope.getContextPath}/validate" method="Post">
希望我能有所帮助。