我试图实现一个简单的登录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获取参数以获取登录表单
发布评论