Java EE:从POST获取参数以获取登录表单 [英] Java EE: Getting parameters from POST for a login form

查看:101
本文介绍了Java EE:从POST获取参数以获取登录表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图实现一个简单的登录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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆