关于servlet的复用功能的实现

一个servlet其实可以实现很多个请求跟form表单的action!

比如:我们可以在要提交的form表单中设置一个隐藏的input,并命名和赋值,
然后通过servlet的请求得到这个input,从而用来区分是哪个jsp页面的action,
从而在一个servlet中复用实现多个form表单的请求。
例如下面的jsp中我们定义了<input type="hidden" name="method" value="savepwd">,当该form表单提交到servlet之后,我们就可以获得这个input的值,从而区分是哪个form.

<form id="userForm" name="userForm" method="post" action="${pageContext.request.contextPath }/jsp/user.do">
                    <input type="hidden" name="method" value="savepwd">
                    <!--div的class 为error是验证错误,ok是验证成功-->
                    <div class="info">${message}</div>
                    <div class="">
                        <label for="oldPassword">旧密码:</label>
                        <input type="password" name="oldpassword" id="oldpassword" value=""> 
						<font color="red"></font>
                    </div>
               
                    <div class="providerAddBtn">
                        <!--<a href="#">保存</a>-->
                        <input type="button" name="save" id="save" value="保存" class="input-button">
                    </div>
                </form>

我们的servlet如下:


 @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getParameter("method");
        if(method!=null && "savepwd".equals(method)){
            modifyPwd(req,resp);
        }

    }

public void modifyPwd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User userSession = (User) req.getSession().getAttribute(ConstantField.USER_SESSION);
        String newpassword = req.getParameter("newpassword");
        System.out.println("new1"+newpassword);
        if(userSession != null && !StringUtils.isNullOrEmpty(newpassword)){
            UserService userService = new UserServiceImpl();
            boolean flag = userService.updatePwd(userSession.getUserCode(), newpassword);
            if(flag){
                req.setAttribute("message","修改密码成功,请重新登录账号!");
                //密码修改成功,移除session
                req.getSession().removeAttribute(ConstantField.USER_SESSION);

            }else {//修改密码失败
                req.setAttribute("message","修改密码失败!");

            }
        }else {
            //新密码为空有问题
            req.setAttribute("message","新密码为空!");

        }
        //以上操作进行完,重新转发到当前页面
        //resp.sendRedirect("pwdmodify.jsp");
        req.getRequestDispatcher("pwdmodify.jsp").forward(req,resp);
    }
原文地址:https://www.cnblogs.com/ethanSung/p/14100557.html