【问题标题】:servlet request.getParameter cannot be resolvedservlet request.getParameter 无法解析
【发布时间】:2013-02-08 04:45:42
【问题描述】:

下面是一个从jsp页面获取参数的servlet。

我正在尝试运行以下代码--

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.swing.JFrame;


public class oneServlet extends HttpServlet {

public static Connection getConnection() throws Exception {

    String driver = "org.postgresql.Driver";
    String url = "jdbc:postgresql://10.1.11.112:5432/pack";
    String username = "pack";
    String password = "pack";
    Class.forName(driver);
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
}

public static void main(String[] args) throws Exception {
    String user=request.getParameter("t1");
    String pass=request.getParameter("t2");
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
        conn = getConnection();
        String queryTest = "select username,password from login";
        pstmt = conn.prepareStatement(queryTest);

        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
         String username=rs.getString(1);
         String password=rs.getString(2);    

   if(user.equals(username) && pass.equals(password))
       {

     JFrame frame = new JFrame("/LoginSuccess.jsp");

       }    
        else
        {

            System.out.println("Login Failed,Please try Againe");
        }
        }}

     catch (Exception e) {
        e.printStackTrace();
    } finally {
        pstmt.close();
        conn.close();
    }
}

}

request.getParameter 中显示“请求无法解析”的错误。谁能帮我解决这个问题。

【问题讨论】:

标签: java servlets


【解决方案1】:

当你扩展HttpServlet时,你需要覆盖doGetdoPost(),它们以HttpServletRequestHttpServletResponse为参数。

例子:

public void doPost(HttpServletRequest request, HttpServletResponse response)
           throws IOException, ServletException {
  .......
       String user=request.getParameter("t1"); //Use request variable to do get...
}

阅读更多 herehere

【讨论】:

  • 并将main方法的代码移动到doPost方法。 doGet 一般用于对请求进行预处理。
  • @RohitJain doGet 只有在直接访问servlet的servlet映射时才会执行。
  • @LuiggiMendoza。不完全是。您也可以使用method = GETform 访问doGet,但这是个坏主意。
  • @RohitJain 我知道,但这不是预处理。
  • @LuiggiMendoza。是的,这就是我写在那里的原因,这是一个坏主意,因为它不是 doGet 的用途。我刚刚写了,因为你说,executed only if
【解决方案2】:

Servlet 没有 main() ,它们由 SelvletContainer 或 Webserver(如 tomcat)执行

在你的场景中。

public void doGet(){
    String user=request.getParameter("t1");
    String pass=request.getParameter("t2");
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
        conn = getConnection();
        String queryTest = "select username,password from login";
        pstmt = conn.prepareStatement(queryTest);

        ResultSet rs = pstmt.executeQuery();
        while (rs.next()) {
         String username=rs.getString(1);
         String password=rs.getString(2);    


       if(user.equals(username) && pass.equals(password))
           {
     //JFrame frame = new JFrame("/LoginSuccess.jsp");
     request.getRequestDispatcher().redirect("/LoginSuccess.jsp");

       }    
        else
        {

            System.out.println("Login Failed,Please try Againe");//This will print at the console
        }
        }}

     catch (Exception e) {
        e.printStackTrace();
    } finally {
        pstmt.close();
        conn.close();
    }

了解更多关于servlets

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2015-11-16
    • 2020-01-06
    • 2013-10-05
    • 1970-01-01
    • 2016-11-02
    相关资源
    最近更新 更多