Java EE:从POST获取参数以获取登录表单 [英] Java EE: Getting parameters from POST for a login form
问题描述
我试图实现一个简单的登录servlet,但它无法正常工作。
我想知道的是是如何通过使用HTTP POST的参数。它已经与HTTP GET一起使用,但用户名和密码可以从URL中看到。
< form method =postaction =home>
< input name =usernameclass =form-logintitle =Usernamevalue =size =30maxlength =2048/>
< input name =passwordtype =passwordclass =form-logintitle =Passwordvalue =size =30maxlength =2048/>
< input type =submitvalue =连接>
< / form>
web.xml
< servlet>
< servlet-name>主页< / servlet-name>
< servlet-class> controller.HomeController< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name>主页< / servlet-name>
< url-pattern> / home< / url-pattern>
< / servlet-mapping>
Servlet:
公共类HomeController扩展HttpServlet {
私有HttpSession会话;
私人UserBean userBean;
public void doPost(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException,IOException {
UserBean user = new UserBean();
String userName = request.getParameter(username);
String password = request.getParameter(password);
user.setUsername(userName);
user.setPassword(password);
user = UserDAO.login(user);
dispatch(request,response,ApplicationRessource.getInstance()。getHomePage());
protected void dispatch(HttpServletRequest请求,
HttpServletResponse响应,String页面)
抛出javax.servlet.ServletException,java.io.IOException {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher(page);
dispatcher.forward(request,response);
$ / code $ / pre
问题在于 userName
和 password
字符串始终为空,这意味着永远不会从POST中获取参数。我做错了什么?
解决方案它应该可以工作,您可以通过更改表单方法来获取并尝试检查,您应该看到参数在url中。
I am trying to implement a simple login servlet but it's not working properly.
What I wanted to know is how to pass the parameters using a HTTP POST. It already works with HTTP GET but the username and password are visible from the URL. It would be better to hide them in a POST.
<form method="post" action="home" >
<input name="username" class="form-login" title="Username" value="" size="30" maxlength="2048" />
<input name="password" type="password" class="form-login" title="Password" value="" size="30" maxlength="2048" />
<input type="submit" value="Connect">
</form>
web.xml
<servlet>
<servlet-name>home</servlet-name>
<servlet-class>controller.HomeController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>home</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
Servlet:
public class HomeController extends HttpServlet {
private HttpSession session;
private UserBean userBean;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserBean user = new UserBean();
String userName = request.getParameter("username");
String password = request.getParameter("password");
user.setUsername(userName);
user.setPassword(password);
user = UserDAO.login(user);
dispatch(request, response, ApplicationRessource.getInstance().getHomePage());
}
protected void dispatch(HttpServletRequest request,
HttpServletResponse response, String page)
throws javax.servlet.ServletException, java.io.IOException {
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher(page);
dispatcher.forward(request, response);
}
}
The problem is that the userName
and password
strings are always empty, meaning that the parameters are never fetched from the POST. What am I doing wrong?
解决方案 it should work, can you check by changing form method to get and trying, you should see parameters in url.
这篇关于Java EE:从POST获取参数以获取登录表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!