登录控制器:
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
答案 0 :(得分:2)
您正在使用发送:
userName=test
使用
获取属性request.getParameter("username");
你打错了。改为使用
request.getParameter("userName");
您在第二部分没有做错误。
注:
我建议您为这些人定义常量值,而不是使用String
字面值
private final statis String USER_NAME = "userName";
每次需要时使用
request.getParameter(USER_NAME);