空值来自request.getParameter

时间:2018-05-04 06:16:07

标签: java jsp servlets java-ee model-view-controller

  

登录控制器:

package test;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.webappmvc.mvc.controller.Controller;

public class Login implements Controller{

    public void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();

        System.out.println("UserName Parameter Value: " + request.getParameter("username"));

        if(request.getParameter("login") != null && request.getParameter("userName") != null && request.getParameter("password") != null){
            if(!request.getParameter("userName").equals("") && !request.getParameter("password").equals("") && request.getParameter("login").equals("Login")){
                ArrayList<String> data = (ArrayList<String>) request.getAttribute("model");
                for(int i=0; i<data.size(); i+=2){
                    System.out.println("Username from DB: " + data.get(i) + "\nPassword: " + data.get(i+1));
//                  if(request.getParameter("username").toString().equals(data.get(i))){
//                      if(request.getParameter("password").toString().equals(data.get(i+1).toString())){
//                          session.setAttribute("loggedUser", data.get(i).toString());
//                          response.sendRedirect("home");
//                          return;
//                      }
//                      request.setAttribute("errorMsg", "Invalid Login");
//                  }
                }
            }
        }
        System.out.println("Result view is: " + request.getAttribute("view"));
        request.getRequestDispatcher(request.getAttribute("view").toString()).forward(request, response);
    }

    public String addMapping() {

        return "/login";
    }

}

这里,每个请求都通过在 com.webappmvc.mvc.controller.Controller com.webappmvc.mvc.controller.Controller#doGet 方法中定义的WebappController类进行选择控制器,模型,运行时视图,然后将其转发给 com.webappmvc.mvc.controller.ResponseController #doGet 然后,在响应Controller中,这样的一些代码转发请求,响应客户端项目 Controller#doProcess 方法。

Controller controller = (Controller) request.getAttribute("controller");
controller.doProcess(request, response);

有了这些,当我试图访问/登录时,LoginController被调用,但是 getParameter()每次都返回null。我也尝试访问此网址

  

请求的网址:   http://localhost:8080/FreameworkTest/controller/login?userName=test&password=test&login=Login

我正在这样的控制台中输出。

  

控制台输出:

All request passing through WebApp Controller //From WebAppController
 ----- From Response Controller //From WebAppResponseController

UserName Parameter Value: null  //From LoginController
Username from DB: jitu
Password: 12345
Result view is: /WEB-INF/views/Login.jsp

1 个答案:

答案 0 :(得分:2)

您正在使用发送:

userName=test

使用

获取属性
request.getParameter("username");
你打错了。改为使用

request.getParameter("userName");

您在第二部分没有做错误。

注:

我建议您为这些人定义常量值,而不是使用String字面值

private final statis String USER_NAME = "userName";

每次需要时使用

request.getParameter(USER_NAME);