Servlet配置方式
- 全路径匹配
- 以 / 开始 /a /aa/bb
- localhost:8080/项目名称/aa/bb
- 路径匹配 , 前半段匹配
- 以 / 开始 , 但是以 * 结束 /a/* /*
- * 其实是一个通配符,匹配任意文字
- 以扩展名匹配
- 写法: 没有/ 以 * 开始 *.扩展名 *.aa *.bb
ServletContext 获取全局参数
注意(每个web工程都只有一个 ServletContext 对象。 说白了也就是不管在哪个 servlet 里面,获取到的这个类的对象都是同一个。)
<context-param>
<param-name>address</param-name>
<param-value>重庆</param-value>
</context-param>
<servlet>
<description></description>
<display-name>ServletContext01</display-name>
<servlet-name>ServletContext01</servlet-name>
<servlet-class>com.heima.servlet.ServletContext01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletContext01</servlet-name>
<url-pattern>/ServletContext01</url-pattern>
</servlet-mapping>
上面是 web.xml 中,下面是 测试类中,
注意:是全局参数,在任何测试类里,都可以拿这个 address 参数.
package com.heima.servlet;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletContext01 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1. 获取对象
ServletContext context = getServletContext();
String address = context.getInitParameter("address");
System.out.println("address"+address);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
ServletContext 获取资源文件(一)
1. 获取资源在tomcat里面的绝对路径
先得到路径,然后自己new InpuStream
context.getRealPath("") //这里得到的是项目在tomcat里面的根目录。
D:\tomcat\apache-tomcat-7.0.52\apache-tomcat-7.0.52\wtpwebapps\Demo03\
String path = context.getRealPath("file/config.properties");
D:\tomcat\apache-tomcat-7.0.52\apache-tomcat-7.0.52\wtpwebapps\Demo03\file\config.properties
package com.heima.servlet;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class demo03
*/
public class demo03 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//得到 Servlet 对象
ServletContext context = getServletContext();
//获得指定文件在服务器上的绝对路径
String path = context.getRealPath("file/config.properties"); //什么都不写是根目录
System.out.println("path"+path);
//1. 创建属性对象
Properties properties = new Properties();
InputStream is = new FileInputStream(path);
properties.load(is);
//3. 获取name属性的值
String name = properties.getProperty("name");
System.out.println("name="+name);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
eclipse 快捷键使用小贴士
Alt+Shift+M抽取方法
MyEclipse、Eclipse 调整格式快捷键,ctrl+shift+F
选中你要try的代码,alt+shift+z 就会弹出一个菜单
ServletContext 获取资源文件(二)
2. getResourceAsStream 获取资源 流对象
直接给相对的路径,然后获取流对象。
private void text02(){
try {
// 得到 Servlet 对象
ServletContext context = getServletContext();
// 1. 创建属性对象
Properties properties = new Properties();
//获取 web 下的资源转化成流对象,前面隐藏这当前工程的根目录。
InputStream is = context.getResourceAsStream("file/config.properties");
properties.load(is);
// 3. 获取name属性的值
String name = properties.getProperty("name");
System.out.println("name22=" + name);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}