servlet 的一些知识点

web.xml的<url-patern> 全路径模式比较

 /* 拦截全部url的资源

/ 只拦截静态页面

* 无法同时加前缀后缀

url-patern 匹配原则 如果多个可以匹配,则“精确匹配” 先于“长路径(比较精确路径)匹配”先于 “路径匹配”先于 “后缀名匹配”


Servlet包的GenericServlet.class

1 使用“适配器模式”减少代码量:写一个虚类,实现原接口不常用方法和比较固定的方法,添加一些子类可能常用的方法,不实现关键方法(service()),让继承的子类实现减少实现要写的代码,

2 构造器先于init()加载,要注意可能要出现的空指针异常

3 使用“模板方法模式”减少子类重写时init时被覆盖掉关键语句


Servlet包的HttpServlet.class

添加一下判断的GenericServlet.class


 前端到后端汉字编码问题(tomcat9以下版本)

原因:因为tomcat的编码默认IOS-8859-1

1 post如下:

在后端代码中将请求体编码设置为UTF-8

Request.setCharacterEncoding("UTF-8");

2 get如下:

在tomcat的server.xml 的<connector>头里添加 URIEncoding=“UTF-8”

<connector URIEncoding=“UTF-8>

要重启

3 get post 都有效

先将ISO8859-1解码成byte

再将byte编码为UTF-8

byte[] bytes=要转的字符串.getBytes("ISO8859-1");
要转的字符串 = new String(bytes,"UTF-8");
要转的字符串 = new String(要转的字符串.getBytes("ISO8859-1"),"UTF-8");

响应的PrintWriter流

不用关闭,

响应结束后标准输入流也销毁,所以不用手动close




猜你喜欢

转载自blog.csdn.net/yup1212/article/details/80923077