Java中易混淆问题总结
(自用)持续更新…
一、路径问题
1. Java EE中的路径
① 简介
-
1)首先,一个Java Web工程其文件结构如图所示:
-
2)其次,该项目发布到Tomcat服务器时,将out目录下的文件发布到Tomcat服务器
- 如:
E:\Project\JAVA\javaEE\idea\Practice\out\artifacts\Servlet_war_exploded
- 如:
-
3)静态资源(存放项目web下的html、jsp等文件)存放目录
Servlet_war_exploded
目录下**(即项目根目录)**- 如图:
-
4)项目中存放在WEB-INF文件夹下的文件的路径
- 如:
Servlet_war_exploded\WEB-INF
- 如:
-
5)java文件的字节码(class)文件
- 如:
Servlet_war_exploded\WEB-INF\classes\包名
下
- 如:
-
6)src下的文件存放目录
- 如:
Servlet_war_exploded\WEB-INF\classes
- 如:
② 路径
- 1)当前请求从服务器发出,不需添加虚拟路径,如:
- 请求转发:
request.getRequestDispatcher("/requestDemo4_2").forward(request, response)
- 请求转发:
- 2)当前请求从客户端发出,需添加虚拟路径,如:
- 重定向:
response.sendRedirect("/servlet/responseDemo1_2");
- 重定向:
- 3)ServletContext获取文件路径(默认web目录下)
- 当前目录(即web目录下):
/a.txt
- web/WEN-INF下文件:
/WEB-INF/b.txt
- src目录下文件:
/WEB-INF/classes/c.txt
- 当前目录(即web目录下):
2. Java SE中的路径
- 1)ClassLoader:默认路径为src下的路径
- 若访问src下的文件,例如:
类名.class.getClassLoader().getResourceAsStream("jdbc.propertyes")
- 若访问src下的文件,例如:
- 2)IO流,如File对象:默认路径为项目或Mudule根目录
- 若访问src下的文件,需添加src,例如:
File file = new File("src/jdbc.properties")
- 若访问src下的文件,需添加src,例如:
二、乱码问题
1. 请求/响应
- 1)获取请求参数乱码
- get方式:tomcat8以上已解决
- post方式:在获取参数前设置request的流的编码(因为post获取参数的方式是先获取流,在获取参数)
request.setCharacterEncodinf("utf-8")
- 2)响应给浏览器的中文乱码
- 原因:浏览器默认编码为系统编码(GBK),而服务器中
response.getWriter();
获取的流的编码为tomcat编写时的编码(ISO-8859-1)。由于编码与解码方式不一致,故导致中文乱码。 - 解决1:在获取流之前设置编码为浏览器默认编码(GBK):
response.setCharacterEncoding("gbk");
- 解决2:或者设置响应头的
Content-Tyoe
告诉浏览器本次响应的数据格式
ding(“gbk”);` - 解决2:或者设置响应头的
Content-Tyoe
告诉浏览器本次响应的数据格式 - 解决3(★):直接设置:
response.setContextType("text/html;charset=utf-8")
- 原因:浏览器默认编码为系统编码(GBK),而服务器中