• java.lang.IllegalStateException: Cannot forward after response has been committed


    改成单例模式:

    package com.gzzy.rmm.common.servlet;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.SingleThreadModel;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.log4j.Logger;

    import com.gzzy.af.pojo.EmployeeInfo;

    public abstract class BaseServlet extends HttpServlet{
        private static final Logger log = Logger.getLogger(BaseServlet.class.getName());
        
        protected EmployeeInfo ei = null;
        protected HttpServletRequest request = null;
        protected HttpServletResponse response = null;
        protected PrintWriter pw = null;
        
        public void init() throws ServletException {
        }
        
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req, resp);
        }

        /**
         * 1:设置 此类的全局request、response属性
         * 2:此方法调用 initPage 方法,继承此类实现此方法 的业务方法
         */
        protected void doPost(HttpServletRequest req, HttpServletResponse resp){
            
            /*制单人、制单日期、归属部门 start*/
            EmployeeInfo ei=new EmployeeInfo();
            String t = req.getParameter("tt");
            if("aa".equals(t)) {
                for(int i = 0; i< 10; i++) {
                    if(i == 0 || i == 5 || i == 9) {
                        ei.setEmployeeName("杨大");
                        ei.setId("JCT000820160324125900009431");
                    }
                    System.out.println(Thread.currentThread() + " == " + ei.getEmployeeName());
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
            
            if("bb".equals(t)) {
                for(int i = 0; i< 10; i++) {
                    if(i == 0) {
                        ei.setEmployeeName("kk");
                        ei.setId("JCT000820160324125900009431");
                    }
                    System.out.println(Thread.currentThread() + " == " + ei.getEmployeeName());
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
            
    //        ei.setEmployeeName("韩江");
    //        ei.setId("JCT000820160324125900001451");

    //        ei.setEmployeeName("古琼");
    //        ei.setId("JCT000820160324125900001463");
            
    //        ei.setEmployeeName("龚运丽");
    //        ei.setId("JCT000820160324125900001465");
            
    //        ei.setEmployeeName("陈娅");
    //        ei.setId("JCT000820160324125900001547");
            
            ei.setBelongorg("计划核算科");
            ei.setOrgCode("JCT000320160324121800000117");
            req.getSession().setAttribute("employee", ei);
            /*制单人、制单日期、归属部门 end*/
            try {
                req.setCharacterEncoding("UTF-8");
                resp.setCharacterEncoding("UTF-8");
                resp.setContentType("text/html");
                request=req;
                response=resp;
                //.debug("登录用户信息");
                ei=(EmployeeInfo)request.getSession().getAttribute("employee");
                log.debug("登录用户信息=》"+ei.getId()+ei.getEmployeeName());
                initPage(req,resp);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public abstract void initPage(HttpServletRequest request, HttpServletResponse response) throws Exception;
        
        /**
         * 写数据到jsp前台页面去
         * response内容相应类型为UTF-8
         */
        protected void write(String result) {
            PrintWriter pw = null;
            try {
                response.setContentType("text/html;charset=UTF-8");
                pw = response.getWriter();
                pw.write(result);
            } catch (IOException e) {
                log.error("向页面输出结果失败:"+e);
                e.printStackTrace();
            } finally {
                pw.flush();
                pw.close();
                pw=null;
            }
        }
        
        /**
         * 获取取request里面的值,
         * null、"" 的值都返回 ""
         */
        protected String getParameter(String sourceStr){
            String str=request.getParameter(sourceStr);
            if(str!=null&&str.trim().length()>0){
                return str;
            }else{
                return "";
            }
        }
        
        /**
         * 不能共享request里面的数据
         * URL重新定向:可以是任意的URL
         * 一般用于用户注销登录时返回主页面和跳转到其它的网站等等
         */
        public void sendRedirect(String url) {
            try {
                response.sendRedirect(url);
            } catch (Exception e) {
                e.printStackTrace();
                log.error("servlet跳转页面异常:",e);
            }
        }
        
        /**
         * 浏览器地址栏不变
         * 转发页面和转发到的页面可以共性request里面的数据
         * 页面的转发:只能是同一个Web应用程序的其他Web组件
         * 一般用于用户登录的时候根据角色转发到相应的模块等等
         * request.setAttribute("user", user);===jsp==>${user}/request.getAttribute("user")
         * jsp=name=post===>servlet=request.getParameter("name");
         */
        public void forword(String url) {
            try {
                request.getRequestDispatcher(url).forward(request,response);
            } catch (Exception e) {
                e.printStackTrace();
                log.error("servlet跳转页面异常:url="+url+",request="+request,e);
            }
        }

        public void destroy() {
            super.destroy();
        }
    }

  • 相关阅读:
    JS eval()小结
    纯JS的ajax实例
    js特效代码-鼠标样式
    JS typeof与instanceof的区别
    linux下网卡绑定
    KVM+VNC 虚拟机远程管理
    smokeping安装
    Python:字符串中引用外部变量的3种方法
    Python:模块学习——os模块
    Python:模块学习——sys模块
  • 原文地址:https://www.cnblogs.com/lanjianqing/p/5516642.html
Copyright © 2020-2023  润新知