一、web项目中的路径问题
1-1获得资源路径
1-1-1class类获得资源
InputStream in= this.getClass().getResourceAsStream("...");
class类中的ResourceAsStream;
以“/”开头,相对于classes路径
不以“/”开头,则相对于当前的class文件所在的路径
1-1-2 ClassLoader获得资源
InputStream in= this.getClass().getClassLoader().getResourceAsStream("...");
classLoader类是相当于当前的classes路径
1-1-3 ServletContext获得资源
- 使用ServletContext的getResourceAsStream方法:返回资源文件的读取字节流。
- 使用ServletContext的getRealPath方法,获得文件的完整绝对路径path(除了可以获取数据,还可以获取资源文件的名称)
1-2:web.xml下的<url-pattern>路径
- 以 * 开头 用于过滤器
- 以 / 开头 当前项目路径 开始 (http://localhost:8080/项目名/)
1-3:转发/包含路径(服务器<--->服务器)
- 以 / 开头,则相当于当前项目路径 (http://localhost:8080/项目名/)
- 不以 / 开头,则相当于当前Servlet路径 (http://localhost:8080/项目名/Aservlet/)
1-4:重定向路径(客户端路径)
只能以/ 开头,相当于当前主机。 (http://localhost:8080/)
resp.sendRedirect(req.getContextPath()+"/EServlet");
1-5:页面中的超链接
- 以/ 开头,相当于当前主机。 (http://localhost:8080/)
- 不以 /开头,则相当于当前页面的所在路径
二、URL编码问题
由于表单类型是content-Type:application/x-www-form-urlencoded。可以直接把中文进行URL编码(%+两位16进制);
然而GET中,的中文无法直接进行URL编码
方法
java中URL 的编码和解码函数
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);
String u=URLEncoder.encode("好的","UTF-8");
String uu=URLDecoder.decode(u,"UTF-8");