通过单个Servlet处理不同的请求

时间:2012-09-30 13:13:43

标签: jsp servlets

我的servlet就像这样

@WebServlet(name = "login", urlPatterns = {"/login"})
public class login extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String username = request.getParameter("username");
        String password = request.getParameter("password");
        password = Base64.encode(password.getBytes());
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.getLoggedIN();
}

根据这个servlet,我可以使用“登录”并将GET或POST数据发送到此服务器,这是完全可以的 我的问题是,有没有办法可以使用这个servelt并指导不同的请求。 例子

  1. 'login'(发布请求将执行) - > doPost()方法(我知道doPost)
  2. 'signout'(发布请求将执行) - >另一个定义的方法,它将作为一个doPost方法
  3. 我不知道这是可能的!

4 个答案:

答案 0 :(得分:3)

  • 我认为您将拥有SignOutLogin按钮的名称。 因此,当您点击其中一个时,在Servlet您可以查看哪个 实际上是通过调用button来点击request.getParameter() 按钮名称,然后将请求转发给适当的方法..

所以,在你的servlet,你可以拥有这种代码: -

if (request.getParameter("LoginButton") != null) {
     // Forward to login method

} else if(request.getParameter("SignOutButton") != null) {
     //Forward to signout method..
}
  • 另一种方法是将Button的名称作为Query String发送...然后您可以从该查询中获取servlet中的名称 使用request.getParameter()
  • 的字符串

所以查询字符串如下所示:

http://localhost:8080/yourServlet?action=Login
http://localhost:8080/yourServlet?action=SignOut

答案 1 :(得分:1)

我在类似情况下所做的工作如下:

  1. 使用隐藏字段描述我想要执行的操作类型(例如登录,注销,输入数据,更新数据等等)
  2. 从请求对象中检索hiddden参数的值。
  3. 对每个可能的操作使用if else梯形图,然后在if else块中调用适当的方法。
  4. 我知道这是非常基本的,但希望它会有所帮助。

答案 2 :(得分:0)

添加其他模式。检查每种请求类型唯一的请求参数,或者您也可以使用“request.getRequestURI”方法验证它是登录还是路标请求

答案 3 :(得分:-1)

根据我们正在使用的一般情景说明 用于将要处理的数据(例如,从HTML表单)提交到所识别的资源。数据包含在请求正文中。这可能会导致创建新资源或更新现有资源或两者。

因此,在UI中,您将插入数据和您也可以看到的特定数据 在数据库中。  在您的代码中

 @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    String username = request.getParameter("username");
    String password = request.getParameter("password");
    password = Base64.encode(password.getBytes());
    User user = new User();
    user.setUsername(username);
    user.setPassword(password);
    user.getLoggedIN();

仅获取您正在设置的数据。 或者你可以使用

if(user!=null){

//在这里,您可以将您的请求转发到某处。 }