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',是因为主键字段重复,新创建的数据主键和原来的相同,所以需要把主键设置为自增字段