Javaweb学习笔记(一):Servlet常见问题

1. 在server.xml中设置context路径,如果Path值为“”,则可以访问自己的页面,无法访问Tomcat主页

2. 同样的context路径,path为空,却启动toncat失败

    解决:原因是有两个相同的path路径,空字符算相同的路径 path=“”

3.在使用getWriter()向浏览器输入数据时,设定好输入对象PrintWriter out后,要重启tomcat,否则会出现404

4.不使用new而调用一个方法创建对象

//获取到printWriter对象
        PrintWriter printWriter = response.getWriter();
        printWriter.write("看完博客点赞!");

实质是对象用类的方法创建,构造函数为私有private,目的是为了让使用者只能创造一个对象(单例模式),详见工厂模式

5.关于Servlet 的doGet(),doPost(),service()

service源码:

protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        String method = req.getMethod();
        if(method.equals("GET"))
        {
            long lastModified = getLastModified(req);
            if(lastModified == -1L)
            {
                doGet(req, resp);
            } else
            {
                long ifModifiedSince = req.getDateHeader("If-Modified-Since");
                if(ifModifiedSince < (lastModified / 1000L) * 1000L)
                {
                    maybeSetLastModified(resp, lastModified);
                    doGet(req, resp);
                } else
                {
                    resp.setStatus(304);
                }
            }
        } else
        if(method.equals("HEAD"))
        {
            long lastModified = getLastModified(req);
            maybeSetLastModified(resp, lastModified);
            doHead(req, resp);
        } else
        if(method.equals("POST"))
            doPost(req, resp);

可见,service主要是起到跳转的作用,其中就包括doGet和doPost方法,如果重写service方法,不管有没有其他方法(如doGet,doPost),都会执行service方法,而不会执行其他方法。

视频中,一直是通过重写service方法来实现功能,但实际设计中是通过重写doGet和doPost来实现表单数据的获取。

6、在插入数据时,报错 Duplicate entry '0' for key 'PRIMARY',是因为主键字段重复,新创建的数据主键和原来的相同,所以需要把主键设置为自增字段

猜你喜欢

转载自blog.csdn.net/q503385724/article/details/79933816
今日推荐