zoukankan      html  css  js  c++  java
  • java.lang.IllegalStateException

    java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:423)
    经过分析、查看jdk文档终于找到解决的办法,在response.sendRedirect()方法后加return语句即可,如下:
    response.sendRedirect(login.jsp);
    return null;
    原因是:在程序中两次调用了response.sendRedirect()方法.
    jdk5.0文档中很清楚地介绍了出现IllegalStateException异常的可能情况:
    1)同一个页面中再次调用response.sendRedirect()方法.
    2)提交的URL错误,即不是个有效的URL.

    package com.servlet;
    
    import java.io.*;
    import java.sql.*;
    
    import javax.servlet.http.*;
    import javax.servlet.*;
    import javax.swing.JOptionPane;
    
    import com.bean.DataByPage;
    import com.sun.rowset.CachedRowSetImpl;
    
    public class Handlemodify extends HttpServlet {
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        @SuppressWarnings("restriction")
        CachedRowSetImpl rowSet = null;
    
        @Override
        public void init(ServletConfig config) throws ServletException {
            // TODO Auto-generated method stub
            super.init(config);
    
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    
            } catch (Exception e) {
                System.out.println("没有加载到驱动");
            }
        }
    
        @Override
        public void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            // TODO Auto-generated method stub
    
            req.setCharacterEncoding("gb2312");
            HttpSession session = req.getSession(true);
            /*
             * true: 如果session存在,则返回该session,否则创建一个新的session; false:
             * 如果session存在,则返回该session,否则返回null.
             */
            String Id = req.getParameter("identity");
            String password = req.getParameter("password").trim();
            String again_password = req.getParameter("again_password").trim();
            // boolean b = password.length() > 0 && again_password.length() > 0;
            Connection con = null;
            String cdn = "";
            DataByPage dataBean = null;
            try {
                dataBean = (DataByPage) session.getAttribute("dataBean");
                if (dataBean == null) {
                    dataBean = new DataByPage();// 创建对象
                    session.setAttribute("dataBean", dataBean);
                }
            } catch (Exception exp) {
                dataBean = new DataByPage();// 创建对象
                session.setAttribute("dataBean", dataBean);
            }
            if (password == null)
                password = "";
            if (!password.equals(again_password)) {
                // userBean.setBackNews("两次密码不同,注册失败");
                JOptionPane.showMessageDialog(null, "你输入的密码不同,请重新输入", "error",
                        JOptionPane.ERROR_MESSAGE);
                resp.sendRedirect("/demo9/student/modify.jsp");
                return;//这里得加个return 不然会报java.lang.IllegalStateException
            }
    
            try {
                con = DriverManager.getConnection(
                        "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=manage",
                        "wyc", "123456");
                Statement sql = con
                        .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                ResultSet.CONCUR_READ_ONLY);
                cdn = "update users set password='" + password + "'"
                        + "where Idnumber='" + Id + "'";
                ResultSet rs = sql.executeQuery(cdn);
                rowSet = new CachedRowSetImpl();
                rowSet.populate(rs);// 将rs记录转载到CachedRowSetImpl对象中,然后关闭数据库连接,释放资源
                dataBean.setRowSet(rowSet);
                con.close();
    
            } catch (SQLException ex) {
                System.out.println(ex);
            }
            resp.sendRedirect("/demo9/tiaozhuan.jsp");
        }
    }
  • 相关阅读:
    【设计模式】3、工厂方法模式
    【设计模式】2、生成器模式(建造者模式)
    【设计模式】1、抽象工厂模式
    UNION 和UNION ALL
    树的遍历
    相关前台跨域的解决方式
    有关this指针指向问题
    有关箭头函数
    深入理解js的变量提升和函数提升
    linux tail 命令详解
  • 原文地址:https://www.cnblogs.com/yi-mi-yangguang/p/6241085.html
Copyright © 2011-2022 走看看