2021-02-21 23:44 Jackson对类的属性的注解

JavaBean 的字段声明处的注解,可以设置一个不同的名字,这个名字会被用作字段对应的JSON属性名;
反序列化的时候,用构造器参数的注解来绑定JSON的属性名和构造器参数
image.png

2021-02-12 01:06 数据库连接池初始化

在之前的项目里用 ServletContextListener 调用下面的 DataBus.init() 来配置数据库连接池,新项目想复用数据库配置,却忘记在 Listener 中调用这个方法,导致空指针。
配置文件 database.properties 忘记复制到新项目,复制过来以后还是没解决空指针,是因为 Idea每次build的时候没有自动更新文件,把 target 文件夹全删掉,再 build 一编就好了。
image.png

2021-02-12 00:10 Controller改名

如果依赖配置文件来加载所有的 Controller,很容易出错,因为首先类名很长容易写错。其次,心血来潮改名以后,忘记在配置文件里改过来,也会出错。
image.png

2021-02-11 23:00 getMethods()返回值

反射API里的 getMethods() “返回所有的 public 方法,包括从超类继承来的 public 方法”,所以会返回 Object 类里的 equals()、hashCode()、toString()、wait() 等方法,遍历 Controller 的这些方法浪费了时间,应该采用getDeclaredMethods() “返回这个类或接口的全部方法,除了从超类继承的方法”
image.png

2021-01-14 00:20 转发会改变uri

  1. 调用 request.getRequestDispatcher("page.jsp").forward(request,response);,<br /> 再在 page.jsp 中调用 request.getRequestURI();会返回 XXXX/page.jsp

2021-01-14 00:20 index.jsp问题

  1. 如果一个目录下有 index.jsp,又有一个 servlet url与这个目录相同,请求会交给 index.jsp处理,不会给另一个servlet

2021-01-11 03:00 WebFilter的顺序

  1. 在类定义开头写注解是不能指定 WebFilter 的顺序的,如果必须先执行 UserFilter 再执行 CommentFilter,就要在 WEB-INF/web.xml 文件中写 mapping。<br /> 因为没注意顺序的问题,导致 request.setCharacterEncoding("UTF-8") 没有在所有操作之前执行,进而收到了乱码。

2021-01-06 23:25 div元素的间隔

不算是错误吧,可能各浏览器的处理方式不一样。在我现在用的 Chrome 内核的 edge 87 中,有这些情况:
image.png
image.png
image.png

2020-12-28 14:39 @WebFilter和@WebServlet

把 DonloadFilter 改成 DownloadServlet 结果注解没改过来,tomcat 加载项目的时候总报错:一个或多个筛选器启动失败。。。搞了一天。。。
image.png

2020-12-17 06:50 cookie不能存放一些字符

抄了别人的代码,代码中在 cookie 字符串里面加了逗号,debug 找出来了,网上搜了一下,逗号,分号,空格和非ASCII字符不能进 cookie,但可以编码后放进cookie。一篇文档
_

2020-12-16 01:00 servlet 中的 url

假如,项目根目录是:tomcat/webapps/demo
本地启动 tomcat,浏览器访问 localhost:8080/demo_/user-manage/_login.html
login.html 里有一个表单


web.xml 做映射的时候,就该写 /user-manage/user/login__

特别说明:不管是在 web.xml 文件中做映射,还是用 Java 注解的方式,也不管项目是直接部署在 webapps 下还是它的子文件夹下,抑或是 war 包部署,都 不需要写项目目录名,在这里就是 /demo

此外,uri 如果以 “/“ 开头,就表示绝对路径,否则表示相对路径。
如果用相对路径,不管是重定向还是转发,表示的位置是一样的,即相对于当前请求的 uri 的路径。假设当前请求是 /login,那么下面的请求就是 /registry,是在一个目录下的。

  1. request.getRequestDispatcher("/registry").forward(request, response);

如果用绝对路径,转发的时候绝对路径是相对于项目根目录的,而重定向的时候绝对路径是从域名后面开始

  1. response.sendRedirect("/demo/user-manage/login-redirect.html");

WEB-INF/web.xml 文件中,映射的 url-pattern 填表单页面相对于项目根目录的路径。
编程错误集 - 图9

2020-12-13 17:00 空指针

错误行为:web项目里,在servlet里获取全局变量,因为变量名多次修改,出现不一致的地方,导致没有获取到值,出现空指针异常。
image.png
image.png

2020-08-18 01:47 集合元素反复添加

错误行为:往集合中添加元素,拿同一个对象循环修改,循环放到集合里。太sb了。Java变量全是指针!
image.png