7 servlet的入门

来源:互联网 发布:知乎for mac下载 编辑:程序博客网 时间:2024/06/05 04:03

servlet的入门

1、简介:是运行在 Web 服务器中的小型 Java 程序,通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
2、实现方法
(1)实现Servlet接口
(2)继承GenericServlet, HttpServlet类
(3)需要web服务器知道java程序不是一个普通的java程序,而是一个servlet
3、入门程序
public class ServletDemo1 extends GenericServlet {@Overridepublic void service(ServletRequest req, ServletResponse resp)throws ServletException, IOException {// 向页面输出内容resp.getWriter().write("hello servlet");}}

我们还需要在web.xml里面进行配置

 <servlet><servlet-name>servletDemo1</servlet-name><servlet-class>cn.itcast.servlet.ServletDemo1</servlet-class></servlet><servlet-mapping><servlet-name>servletDemo1</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
4、servlet的执行过程(画图分析执行过程)


5、servlet的生命周期

(1)生命周期:从servlet创建到servlet销毁的过程

(2)servlet接口里面有五个方法,里面有3个方法和生命周期有关。

init创建时候执行  执行一次;service方法 访问servlet时候会执行访问几次执行几次;destroy方法,销毁servlet时候执行。

6、servlet开发细节的问题
(1)HttpServletRequest和HttpServletResponse带有HTTP协议
(2)在GenericServlet类里面有init没有参数的方法和init有参数的方法的关系,我们一般是用无参的方法。
(3)在HttpServlet类里面service方法和doxxx方法,根据提交的方式,来确定调用不同的方法
(4)在服务器启动时候创建servlet,需要在配置文件进行配置
7、开发中路径的问题
相对路径
绝对路径(一般开发中都使用)
第一种写法:http://ip地址+端口号/文件的路径
第二种写法:直接写 /项目名称/文件路径
8、ServletConfig对象
(1)创建ServletConfig对象
(2)得到当前运行的servlet的名称   getServletConfig()
(3)得到当前运行的servlet的名称   String getServletName() 
(4)创建servletContext对象  ServletContext(常用方法) getServletContext() 
(5)获取初始化参数
a:在web.xml中进行配置初始化参数,在servlet标签里面进行配置
b:String getInitParameter(String name) :根据名称得到值(参数是初始化参数名称)
  Enumeration getInitParameterNames()  :得到所有的初始化参数的名称
9、ServletContext对象
(1)创建ServletContext对象
a:使用ServletConfig对象里面的方法 getServletContext()
b:直接使用 getServletContext()
(2)获取全局的初始化参数
a:配置全局初始化参数
b:String getInitParameter(String name) :根据名称得到全局初始化参数的值
 Enumeration getInitParameterNames()  :得到所有的全局初始化参数的名称
(3)在启动tomcat服务器时候,会为每个项目创建一个servletContext对象,在这个项目里面如果通过servlet1向,servletContext里面设置一个值,在这个项目里面的其他的servlet里面可以的这个值
a:servletContext域对象:在一定的范围内,存值和取值,范围是整个web项目
b:存值:setAttribute(String name, Object object) 取值:getAttribute(String name) 
c:首先创建servlet1,通过servlet1向servletContext里面设置一个值
 其次,再创建servlet2,在servlet2获取通过servlet1设置的值
10、练习:统计网站的访问次数

(1)需要创建一个servlet,每次访问这个servlet计算一次访问,分析图

11、使用servletContext对象获取web项目中的资源
(1)使用传统方式获取web项目中的文件
a:创建web项目,创建properties文件
b:得到要操作文件的输入流,使用相对路径
* classes/db1.properties : 相对路径
* 相对虚拟机的位置
* 在web项目中,虚拟机在tomcat启动时候,tomcat在bin里面
c:使用传统方式里面的相对路径,不能读取web项目中的文件
(2) 使用servletContext对象读取web项目中的文件
a:InputStream getResourceAsStream(java.lang.String path) :得到要操作文件的输入流
第一个操作:文件放到src下面
= 路径: 第一个位置 /,理解为项目的名称;后面写文件在tomcat的webapps里面的具体的路径
= 代码
//路径: 第一个位置 /,理解为项目的名称;后面写文件在tomcat里面的具体的路径
InputStream in = context.getResourceAsStream("/WEB-INF/classes/db1.properties");
第二个操作:文件放到包里面
= 路径:第一个位置 / 理解为项目名称;后面写文件在tomcat的webapps下面的具体的路径
= 代码
//路径:第一个位置 / 理解为项目名称;后面写文件在tomcat的webapps下面的具体的路径
InputStream in = context.getResourceAsStream("/WEB-INF/classes/cn/itcast/read/db2.properties");
第三个操作:文件放到webroot下面
= 路径:第一个位置 / 理解为项目名称;后面写文件在tomcat的webapps下面的具体的路径
= 代码:
//路径:第一个位置 / 理解为项目名称;后面写文件在tomcat的webapps下面的具体的路径
InputStream in = context.getResourceAsStream("/db3.properties");
* 注意:当把文件放到和webroot同级的目录下面,这个文件不会部署到tomcat里面,
所以使用servletContext对里面getResourceAsStream方法不能得到文件的内容
(3)String getRealPath(java.lang.String path)  :得到要操作文件的完全路径(带盘符的路径)
= 参数:和getResourceAsStream类似的
== 第一个位置 / ,项目名称;后面写文件在tomcat的webapps里面的具体的路径
= 代码
//使用getRealPath方法
//路径:第一个位置 / ,项目名称;后面写文件在tomcat的webapps里面的具体的路径
String path = context.getRealPath("/db3.properties");
//C:\Users\asus\Desktop\javaweb\day06\apache-tomcat-7.0.53\webapps\day07-7\db3.properties
//得到要操作文件的输入流
InputStream in = new FileInputStream(path);

12、使用类加载器读取文件
(1) 读取的文件的位置是 classes里面的文件
(2) 得到类加载器
a:首先得到Class
* 第一种方式:类名.class
* 第二种方式:对象.getClass()
* 第三种方式:Class.forName("包类路径")
b:使用Class得到类加载器
(3)代码
//得到类的Class
Class clazz = ServletDemo1.class;
//得到类加载器
ClassLoader loader = clazz.getClassLoader();
//得到要操作文件的输入流
//文件的路径,因为读取的classes里面的文件,直接写文件的名称
InputStream in = loader.getResourceAsStream("db1.properties");

0 0