我正在编写一个类来检查MySQL数据库中的登录名和密码。 填充的表单转到.jsp文件,然后我想在此.jsp中导入该类以执行操作。
课程是这样的:
import import java.sql.*;
public class TestQuery {
public void logging in() {
String user = request.getParameter("user");
String passwd = request.getParameter("passwd");
Connection C = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=foo");
ResultSet rs = stm.executeQuery("SQL QUERY");
if (rs == NULL) {
response.sendRedirect("LoginScreen.jsp");
} else {
switch (rs.getInt("id")) {
case 1:
response.sendRedirect("foo1.jsp");
break;
case 2:
response.sendRedirect("foo2.jsp");
break;
case 3:
response.sendRedirect("foo3.jsp");
break;
default:
response.sendRedirect("LoginScreen.jsp");
}
}
}
}
但是后来我收到消息请求无法解析,响应无法解析等。
我做错了什么?这是执行此操作的最佳方式吗?
答案 0 :(得分:6)
您的课程必须延长HttpServlet
。
public class TestQuery extends HttpServlet {
// ...
}
您必须在doGet()
或doPost()
中执行作业,具体取决于请求方法。 HttpServletRequest
和HttpServletResponse
可用作方法参数。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ...
}
由于这相当简单,您似乎并没有真正阅读任何JSP / Servlet书籍/教程。我强烈建议在继续之前这样做。
答案 1 :(得分:0)
我假设您正在实例化此类并从JSP调用您的方法。
请求和响应对象在JSP中自动声明。您需要将请求和响应参数从JSP传递到您的方法中。
答案 2 :(得分:0)
来自documentation,这意味着您可以在jsp页面中使用request
(或通过实现HTTpServelt并使用doPost或get方法来使用servlet),但不能在其他类中使用!
隐含物品
JSP技术使任何JSP页面都可以使用一组隐式 对象。 这些是由...自动创建的Java对象 Web容器,允许与底层servlet交互 环境。强>
可以使用下面列出的隐式对象。对于 有关这些对象可用方法的信息,请参阅 Sun Microsystems Javadoc用于着名的类和接口。
页
这是JSP页面实现类的一个实例,并且是 页面翻译时创建。页面实现类 实现接口javax.servlet.jsp.HttpJspPage。请注意该页面 在JSP页面中与此同义。
请求强>
这表示HTTP请求,是类的实例 实现了javax.servlet.http.HttpServletRequest接口 扩展了javax.servlet.ServletRequest接口。