阶段错误汇总

本文详细解析了在Servlet编程中常见的五个错误,包括doPost方法参数错误、DataAccessException未被捕获、网页刷新引起的UI问题、重定向配置错误及Servlet类路径配置不当。每个问题都附带了解决方案,为开发者提供了宝贵的调试指南。

异常一

创建人

陈思淀

问题标题

Servlet的doPost方法错误

问题分类

代码问题

一级话题

 

问题补充

 

附件

public class ServletDemo5 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        servletContext.setAttribute("msg","hello");
        String realPath = servletContext.getRealPath("/a.txt");
        System.out.println(realPath);
        String realPath2 = servletContext.getRealPath("/WEB-INF/b.txt");
        System.out.println(realPath2);
        String realPath3 = servletContext.getRealPath("/WEB-INF/classes/a.txt");
        System.out.println(realPath3);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(“request”, “response”);
    }
}

问题答案

问题分析:

编译报错

问题解决方法:

Dopost方法应该传对象,而不是传进字符串

异常二

创建人

陈思淀

问题标题

 

问题分类

代码编写错误

一级话题

DataAccessException

问题补充

  public class UserDao {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    public User login(User loginUser) {
        try {
            String sql = "select * from user where username= ? and password=?";
            User user = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), loginUser.getUsername(), loginUser.getPassword());

            return user;

        }
        //注意此行,一定要捕捉这个异常!并返回null值
        catch (DataAccessException e){
            return null;
        }



    }


}

附件

 

问题答案

问题分析:

没有捕获DataAcessException异常,导致null无法返回数据

问题解决方法:

添加DataAccessExeption的catch。

异常三

创建人

陈思淀

问题标题

代码书写问题

问题分类

网页刷新

一级话题

 

问题补充

 

附件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <script>
        window.onload = function () {
            var elementById = document.getElementById("checkCode");
            var elementById2 = document.getElementById("change");
            elementById.onclick = function () {
                var date = new Date().getTime();
                elementById.src = "/checkCodeServlet?" + date;

            }
            elementById2.onclick = function () {
                var date = new Date().getTime();
                elementById.src = "/checkCodeServlet?" + date;

            }

        }


    </script>
</head>
<body>

<img src="/checkCodeServlet" id="checkCode">
<a id="change" style="cursor:pointer;color: blue;"><u>看不清?换一张</u></a>

</body>
</html>

问题答案

问题分析:

按文字按钮时,图片刷新但网页震动

问题解决方法:

去掉href链接

异常四

创建人

陈思淀

问题标题

重定向错误

问题分类

 

一级话题

 

问题补充

public class ServletRedirect1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("R1....");
        response.sendRedirect("/test/ServletRedirect2");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   this.doPost(request, response);
    }
}

附件

 

问题答案

问题分析:

无法跳转重定向

问题解决方法:

加上虚拟路径名

异常五

创建人

陈思淀

问题标题

无法找到servlet类,报404错误

问题分类

无法查找到正确的servlet类

一级话题

 

问题补充

 

附件

@WebServlet("/successServlet")

问题答案

问题分析:

程序无法找正确的servlet,是因为servlet中路径编写不正确

问题解决方法:

修改成正确的连接路径

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值