首页 > 其他分享 >每日总结2023-05-23

每日总结2023-05-23

时间:2023-05-23 21:12:55浏览次数:40  
标签:05 23 sendRedirect req getParameter 2023 import servlet response

今天对于javaweb进行了复习以及回忆,

在进行javaweb项目中

使用idea进行时,webServlet注解不能正常使用,经讨论,查找资料,发现是路径错误,应该是

/包名/注解名/

的格式,在使用中发生了以上错误并加以改正。

package servlet;
import bean.keBean;
import repository.KeRep;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/student")
public class KeSer extends HttpServlet {
    //调用StudentRepository中的增删改查方法
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //判断前端传来的标记,以此执行相对应的增删改查操作
        String method=req.getParameter("method");
        if (method==null){
            method="findAll";
        }
        switch (method){
            case "findAll"://查询所有数据
                List<keBean> list = KeRep.findAll();//调用StudentRepository中的findAll()方法
                req.setAttribute("list",list);//存入request中
                req.getRequestDispatcher("index.jsp").forward(req,resp);//转发到index.jsp中
            case "delete"://删除操作
                String idStr=req.getParameter("classname");
                KeRep.deleteByClass(idStr);//根据id删除
                break;
            case "findById":
                idStr=req.getParameter("id");
                req.setAttribute("student", KeRep.findByClass(idStr));
                req.getRequestDispatcher("update.jsp").forward(req,resp);
                break;
            case "add":
                req.getRequestDispatcher("add.jsp").forward(req,resp);
        }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");//防止中文乱码
        String method=req.getParameter("method");
        switch (method){
            case "add"://添加操作
                //获取前端传来的数据
                String classname = req.getParameter("classname");
                String teacher = req.getParameter("teacher");
                String address = req.getParameter("address");
                String time = req.getParameter("time");
                KeRep.add(classname,teacher,address,time);//调用add方法
                break;
            case "update"://更新操作
                classname = req.getParameter("classname");
                teacher = req.getParameter("teacher");
                address = req.getParameter("address");
                time = req.getParameter("time");
                KeRep.update(classname,teacher,address,time);
                break;
        }
        resp.sendRedirect("/test1/student");//重定向到index.jsp页面
    }
}

 

同时发生了异常


javaweb报错Servlet.service() for servlet [servlet.KeSer] in context with path [/test1] threw exception
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:483)

 

这个错误提示意味着在调用response.sendRedirect()方法之前,已经有内容被输出到了response中,这导致了响应数据被提交,已经无法重定向到另一个页面。
在Java Web中,response用于向客户端发送响应数据,使用response.sendRedirect()方法可以将客户端重定向到另一个Web页面。但是,这个方法有一个限制,它必须在响应被提交之前调用。如果你在输出响应之后尝试使用它,将会引发IllegalStateException异常,提示“Cannot call sendRedirect() after the response has been committed”。
解决方法:要遵循如下步骤:
1、检查所有输出操作,确保在调用response.sendRedirect()方法之前没有提交任何响应数据。
2、确认代码中没有设置响应内容的长度或类型(例如使用response.setContentLength() 或 response.setContentType())。因为一旦发送了响应头,就太晚了。
3、在调用sendRedirect()之前把缓冲区内容清空。可以使用response.resetBuffer()方法清空缓冲区,这也可以避免如此错误。
4、在调用sendRedirect()之后,调用return语句以退出函数,以确保不会在之后尝试输出响应数据。
尽可能提早调用sendRedirect()方法,以确保操作顺利完成,同时,确保其他响应操作没有在该方法之前完成即可避免这个问题。

对此我进行了删除,重定向到此网页解决。

标签:05,23,sendRedirect,req,getParameter,2023,import,servlet,response
From: https://www.cnblogs.com/JJTyyds/p/17426206.html

相关文章

  • 5.23
    #include<iostream>#include<cmath>usingnamespacestd;classPoint{private:doublex;doubley;doublez;public:Point(doublea,doubleb,doublec):x(a),y(b),z(c){};frienddoubleoperator-(Point,Point);};template<class......
  • 2023/5/23
    L1-033出生年分数 15全屏浏览题目作者 陈越单位 浙江大学以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才......
  • day77(2023.5.23)
    1.JSP简介 2.JSP运行原理 3.JSP标签的使用运行结果: 4.JSP原始标签的使用 运行结果:5.JSP的指令标签6.JSP的内置对象 7.请求转发 8.请求转发案例 运行结果: 9.JSP中的四大作用域对象 10.JS......
  • 2023冲刺国赛模拟 7.0
    T1Matrix很容易想到一个\(O(n^4)\)做法,用uint128压位,然后你发现它过了……正解考虑分治,取出矩阵中间的列\(mid\),由于跨越\(mid\)列的询问必然经过\(mid\)列上一点,因此对于\(mid\)左边的点,预处理每个点向右,向下可以到达的所有\(mid\)处的点,对于\(mid\)右边的点,......
  • 5.23每日总结
    今天学习了如何实现AndroidApp的自动登录,目前遇到了点困难,只能实现记住账户和密码不用用户再次输入的功能,还没有实现登录一次后点击应用直接进入。  ......
  • 5.23每日总结
    今天学习了如何将数据库挂到网端,具体步骤如下:在云端搭建数据库服务器搭建云端数据库服务器可以使用云服务商的数据库服务,例如:AWSRDS、阿里云RDS等。根据实际情况选择一个适合的云数据库供应商,并创建一个新的数据库实例。然后通过数据库供应商提供的远程连接工具或命令行工具,......
  • 2023 5 23
    #include<iostream>#include<iomanip>#definePI3.14159fusingnamespacestd;classshape{public:shape(){}~shape(){}virtualfloats(){return0;};};classcircle:publicshape{private:floatr;public:circle(fl......
  • 2023.5.23编程一小时打卡
    一、问题描述:定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle(长方形)、Trapezoid(梯形)和Triangle(三角形),用虚函数分别计算各种图形的面积,输出它们的面积和。要求用基类指针数组,每一个数组元素指向一个派生类的对象。PI=3.14159f,单精度浮点数计算。输......
  • 【2023.03.20】P4710 「物理」平抛运动
    题目传送门:【洛谷】P4710[物理]平抛运动Step1:前置芝士您需要知道并了解以下芝士:数学:三角函数;物理:加速度公式;位移公式;那么如果您并不了解以上芝士,那么请继续向下看;如果您已经掌握以上芝士,那么请跳至“Step2”。三角函数讲解:注意,本题为物理题解,故不会放出......
  • MQCal工程算量V1.2.7.1(20230519)版本发布——土建、水电Excel算量插件工具
    MQCal工程算量加载宏工具是什么?首先说明的是:MQcal不是一个简单的对工程计算式算结果的求值工具。他是我本人结合手工算量经验,充分考虑预算员的需求,从算量表格自己设计、重复项目便捷输入、特殊标记、汇总统计、打印或打印为pdf、造价预估等实用功能一体解决方法。MQCal工程算量......