开发动态项目
- 把开发选项切换到 JavaEE
- 可以在 Window -> Show View 中找到 Package Explorer, 并把其拖拽到开发区的左边
- 在 Servers 面板中新建 Tomcat 服务器. 一定要关联到 Tomcat 安装的根目录
- 新建一个 Dynamic Web Project. 其中 Target Runtime 需选择 Tomcat6.0
- 开发 Java WEB 应用
- 可以通过 run on server 来运行 WEB 项目
Servlet的HelloWord
- 创建一个Servlet接口的实现类
public class HelloServlet implements Servlet
并且重写里面的方法,现在不需要知道这些方法的具体作用 - 在web.xml文件中配置和映射这个Servlet
helloServlet
com.atguigu.javaweb.HelloServlet
helloServlet
/hello
Servlet生命周期的方法
一下方法都是由Serlvet容器负责调用
- 构造器
- 只有第一次请求Servlet时,创建Servlet的实例,调用构造器,这说明Serlvet只实例一次
- init
- 只被调用一次,创建好实例(此时构造器已经执行)后立即被调用,用于初始化当前的Servlet
- service
- 被调用多次,每次请求都会调用service方法,实际用于响应请求的
- destroy
- 只调用一次,在当前Servlet所在的WEB应用被卸载前调用,用于释放当前Servlet所占的资源
load-on-startup 参数
- 配置在 servlet 节点中
secondServlet
com.atguigu.javaweb.SecondServlet
2
- load-on-startup
- 可以指定 Serlvet 被创建的时机. 若为负数, 则在第一次请求时被创建.若为 0 或正数, 则在当前 WEB 应用被Serlvet 容器加载时创建实例, 且数组越小越早被创建
serlvet-mapping映射
- 注意事项1
- 同一个Servlet可以被映射到多个URL上,即多个
元素的 子元素的设置值可以是同一个Servlet的注册名
- 同一个Servlet可以被映射到多个URL上,即多个
- 注意事项2
- 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾
- 在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
secondServlet
/*
OR
secondServlet
*.do
注意: 以下的既带 / 又带扩展名的不合法.
secondServlet
/*.action
ServletConfig
封装了Serlvet的配置信息,并且可以获取ServletContext对象
- 配置Serlvet的初始化参数
helloServlet
com.atguigu.javaweb.HelloServlet
user
root
password
1230
-1
- 获取初始化参数
getInitParameter(String name): 获取指定参数名的初始化参数
> getInitParameterNames(): 获取参数名组成的 Enumeration 对象.
String user = servletConfig.getInitParameter("user");
System.out.println("user: " + user);
Enumeration names = servletConfig.getInitParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String value = servletConfig.getInitParameter(name);
System.out.println("^^" + name + ": " + value);
}
ServletContext
- 可以由 SerlvetConfig 获取:
ServletContext servletContext = servletConfig.getServletContext();
- 该对象代表当前 WEB 应用:
- 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.
- 获取当前应用的初始化参数
- 设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.
driver
com.mysql.jdbc.Driver
方法:
getInitParameter
getInitParameterNames
代码:
ServletContext servletContext = servletConfig.getServletContext();
String driver = servletContext.getInitParameter("driver");
System.out.println("driver:" + driver);
Enumeration names2 = servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name = names2.nextElement();
System.out.println("-->" + name);
}
- 获取当前WEB应用的某一个文件的绝对路径
- 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径
getRealPath(String path);
- 代码:
String realPath = servletContext.getRealPath("/note.txt");
System.out.println(realPath);
- 获取当前WEB应用的名称
getContextPath()
- 代码:
String contextPath = servletContext.getContextPath();
System.out.println(contextPath);
- 获取当前WEB应用的某一个文件对应的输入流
getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.
- 代码
InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
- 和 attribute 相关的几个方法