ServletContext的读取资源文件
1、建.properties文件,因为文件存放位置,可能会导致无法导出问题,解决办法就是之前提到的修改pom.xml文件
2、读取资源文件
3、注册+映射
1、在resources下建(应该在这里建,而且不会出问题)
2、观察下db.properities生成位置:默认路径是类路径,在class下
1、不在resources下建,而是在java中的servlet中建(在这里建,不规范,可能会出先无法导出的问题,解决方法在2中)
2、观察下db.properities和aa.properities生成位置:一个生成了,一个没生成
3、没有生成的原因就是无法导出,解决方法是:在pom.xml中,在build中配置resources,来防止资源导出失败问题。(注意,因为这个项目是当前的,不要放在主工程的pom.xml中,应放在当前项目的pom.xml中)
1 <resources> 2 <resource> 3 <directory>src/main/resources</directory> 4 <includes> 5 <include>**/*.properties</include> 6 <include>**/*.xml</include> 7 </includes> 8 </resource> 9 <resource> 10 <directory>src/main/java</directory> 11 <includes> 12 <include>**/*.properties</include> 13 <include>**/*.xml</include> 14 </includes> 15 <filtering>true</filtering> 16 </resource> 17 </resources>
4、观察下db.properities和aa.properities生成位置:两个都在类路径中生成了
1 package com.wang.servlet; 2 3 import javax.servlet.RequestDispatcher; 4 import javax.servlet.ServletContext; 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 import java.io.IOException; 10 import java.io.InputStream; 11 import java.util.Properties; 12 13 public class ServletDemo05 extends HttpServlet { 14 @Override 15 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 16 17 InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); 18 //第一个/代表当前web应用,然后一步步往下找,直到找到配置文件的位置 19 //返回的是一个流 20 Properties prop = new Properties(); 21 prop.load(is); 22 String user = prop.getProperty("username"); 23 String pwd = prop.getProperty("password"); 24 resp.getWriter().print(user+":"+pwd); 25 26 } 27 28 @Override 29 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 30 doGet(req, resp); 31 } 32 }
1 <!--注册和映射--> 2 <servlet> 3 <servlet-name>sd5</servlet-name> 4 <servlet-class>com.wang.servlet.ServletDemo05</servlet-class> 5 </servlet> 6 <servlet-mapping> 7 <servlet-name>sd5</servlet-name> 8 <url-pattern>/sd5</url-pattern> 9 </servlet-mapping>