servlet

来源:互联网 发布:联表查询sql语句 编辑:程序博客网 时间:2024/06/05 09:49

Servlet技术,里面都是些接口和抽象类,一开始真不好理解,不过在看了老师画的Servlet类图后,思路清晰了许多,把今天的笔记发上来,好东西大家一起共享

一、创建第一个Servlet,输出HelloServlet

1、建立JavaWeb应用的目录
firstWeb
WEB-INF
classes------>自定义的servlet就放在此处
lib
web.xml
2、在classes目录下创建HelloServlet.java文件,内容如下:
package cn.itcast.servlet;
import javax.servlet.*;
import java.io.*;
public class HelloServlet extends GenericServlet{

public void service(ServletRequest req,
                             ServletResponse res)
                      throws ServletException,
                             java.io.IOException{
res.getOutputStream().writer("HelloServlet".getBytes());
}
}
3、编译HelloServlet.java
通过控制台(cmd)进入到HelloServlet.java所在的文件夹
先设置环境变量classpath:
set classpath=%classpath%;C:\apache-tomcat-6.0.32\lib\servlet-api.jar
javac -d . HelloServlet.java
4、配置HelloServlet(每写一个Servlet都需要进行配置),在web.xml中进行配置
在<web-app>元素中加入以下内容:
<servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/Hello</url-pattern>
    </servlet-mapping>
5、发布firstApp应用。(开放式目录/war --->拷贝到webapps目录下;也可以用虚拟目录;)
二、修改MyEclipse的servlet默认模板
MyEclipse6:找到MyEclipse6的安装目录,搜索servlet.java,这个就是模板文件
MyEclipse8:C:\Program Files\Genuitec\Common\plugins\com.genuitec.eclipse.wizards_8.5.0.me201003052220.jar这个jar包内的templates内的servlet.java,这个就是模板文件
三、Servlet生命周期
1、代表生命周期的方法init()、service()、destroy()
当用户第一次请求该servlet时,才会执行init()方法,用户对该servlet进行初始化。
若没有用户访问该Servlet,则Servlet不会初始化,即引擎不会实例化该servlet。
一旦servlet初始化了,就会驻留内存。
一旦服务器停止了,会自动执行destroy()方法,用户释放该servlet占用的资源。
2、服务器在启动时自动加载
<servlet>
    <servlet-name>Demo3Servlet</servlet-name>
    <servlet-class>cn.itcast.servlet.Demo3Servlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
说明:<load-on-startup>1</load-on-startup>用户配置服务器自动加载servlet,并初始化,其中的数字代表加载servlet的顺序。


四、ServletConfig对象
Servlet在初始化时,会自动传入一个ServletConfig对象,通过此对像可以获取到针对该servlet配置的参数信息。
参数信息配置如下:
<servlet>
    <servlet-name>Demo5Servlet</servlet-name>
    <servlet-class>cn.itcast.servlet.Demo5Servlet</servlet-class>
    <init-param>
     <param-name>encoding</param-name>
     <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
     <param-name>p1</param-name>
     <param-value>p1Value</param-value>
    </init-param>
  </servlet>
在Servlet中,可以调用ServletConfig对象的getInitParameter(String paramname)来获得指定参数的值。
五、ServletContext对象
一个web应用对应一个ServletContext对象,它的生命周期与web应用的生命周期对应。
1、通过ServletContext对象来实现多个servlet数据共享,有关的方法为:
getAttribute(String name):
setAttribute(String name,Object obj):
removeAttribute(String name):
2、获取web应用的配置参数
配置如下:
<web-app>
<context-param>
   <param-name>url</param-name>
   <param-value>jdbc:mysql:///test</param-value>
  </context-param>
  <context-param>
   <param-name>username</param-name>
   <param-value>root</param-value>
  </context-param>
  <context-param>
   <param-name>password</param-name>
   <param-value>123</param-value>
  </context-param>
</web-app>
通过ServletContext对象的getInitParameter(String paramName)获取根据名字指定的参数值。或者调用
getInitParameterNames()方法获取web应用的所有配置参数
3、利用ServletContext读取资源文件
getRealPath(String path):获取path参数指定的绝对路径。获取实际部署的路径。参数path要以"/"开头,代表了web应用的根目录。
4、利用类加载器来读取资源文件
4.1假如资源文件存放在classes目录下,可以调用以下语句来加载
ClassLoader loader = Demo6ServletContext.class.getClassLoader();
InputStream in = loader.getResourceAsStream("database.properties");
或者
ClassLoader loader = this.getClass().getClassLoader();
4.2假如资源文件放在classes目录中的某个类包中,比如cn.itcast.servletcontext
可以调用以下语句来加载:
ClassLoader loader = this.getClass().getClassLoader();
InputStream in = loader.getResourceAsStream("cn/itcast/servletcontext/database.properties");
5、向应用的临时目录中写临时文件
Servlet规范规定,在创建ServletContext对象时,需要用参数名为“javax.servlet.context.tempdir”去绑定临时文件目录。

能得到临时目录,可以调用IO往其中添加临时文件。


原创粉丝点击