1.生命周期
装载。动态执行的。
创建一个实例
调用它的init()方法
服务 如果容器接收到servlet的请求,它就调用servlet中的service()方法
销毁 调用 servlet中的destory()来销毁掉
2.
Servlet一般会继乘HttpServlet的。封装了编写基于HTTP协议的Servlet的大部分功能。
doGet:处理HTTP GET的请求。
doPost:处理HTTP POST的请求。
doGet:中的
response.setContentType("text/html");//设置好MIME类型的
PrintWriter out = response.getWriter();//得到一个输出流对象
第一个实例:
package com.jspdev.ch7;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorldServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println("
A Servlet");
out.println(" ");
out.println("Hello World");
out.println("
");
out.println("");
out.flush();
out.close();
}
}
配置XML的代码如下:
This is the description of my J2EE component
This is the display name of my J2EE component
HelloWorldServlet 类名
com.jspdev.ch7.HelloWorldServlet 类的地址
作URI映射
HelloWorldServlet
/servlet/HelloWorldServlet //URI哦
在此输入URL地址为:
其中的FirstWpp为你的工程项目名称。/servlet/HelloWorldServlet表示你的URI地址的哦!
就算你变成hello也可以这时的URL为:
就是映射的URI地址的哦!
3.Servlet常用接口的使用
实现相关 实现的相关类和方法
配置相关
异常相关
请求和响应
会话跟踪
上下文
协作
过滤
其他类
4.使用HttpServlet处理请求
这个是表单提交的窗体的哦!
那XML配置单元如下:
This is the description of my J2EE component
This is the display name of my J2EE component
HelloWorldServlet
com.jspdev.ch7.HelloWorldServlet
HelloWorldServlet
hello
因为我们在URL中输入:
是可以打开我们的servlet的哦!
处理客户请求的数据的哦!
POST适用于发送大量的数据的哦!
doPut 与POST相似的。它允许客户把真正的文件存在服务器上面的哦!
doDelete 与PUT相似 的哦!允许客户端删除服务器端的文件或WEB页面。
5.获得Servlet初始化参数
以后如果想在WEB-INF中配置一些初始化的参数是可以这样来配置的哦!
[WEB-INF/web.xml文件是相当地重要的哦!]
比如说要读取出来数据库配置的相关信息就得从这里进行配置处理的哦!
public void init() throws ServletException {
// Put your code here
driver = getInitParameter("DRIVER");
}
其中中的WEB.XML文件中去:
This is the description of my J2EE component
This is the display name of my J2EE component
HelloWorldServlet
com.jspdev.ch7.HelloWorldServlet
DRIVER
com.heko.hkl
要知道配置在哪个servlet中去的哦!
这里的意思是表示哪个servlet对应下面的初始化的参数的哦!
到时在我们的JAVA文件中就可以获取到这些初始化参数的哦!
[重点的东西:讲讲配置的相关信息吧!]
配置包括了Servlet名字,Servlet类,初始化参数,启动装入的优先级,Servlet的映射和运行的安全配置。
配置文件信息:
This is the description of my J2EE component
This is the display name of my J2EE component
HelloWorldServlet //名字
com.jspdev.ch7.HelloWorldServlet//类
//初始化参数
DRIVER
com.heko.hkl
30 //启动装入优先级,比如有两个就会有一个先后顺序的问题了!
HelloWorldServlet
hello
可以给一个Servlet作多个映射操作的。可以通过多种方式进行访问到这个Servlet的哦!
输入不同的URL都是可以访问到这个Servlet的哦!
使用Servlet将图片画好,之后输入到客户端中!
6.使用Servlet实现上下文监听
为了实现监听需要实现ServletContextListener和ServletContext-AttributeListener接口
[制作一个从后台管理页面的程序哦!]
之前总是觉得那个Listener比较难理解的哦!哈哈原来如此的哦哦
下面这个实例是可以监听到ServletContext的信息的哦!
public final class MyServletContextListener extends HttpServlet implements
ServletContextListener, ServletContextAttributeListener {
得实现这两个接口的哦!
[忽然明白了一个写日志的好办法哦哈俣!]
看看如下的代码:
private void logout(String message){
PrintWriter out = null;
try{
out = new PrintWriter(new FileOutputStream("c:\\test.txt",true));
out.print(new java.util.Date().toLocaleString()+"::Form ContextListener:"+message);
out.close();
}catch(Exception e){
out.close();
e.printStackTrace();
}
}
通过自己来创建一个文件之后将所有的异常信息写到一个日志文件中去不就得了吗哈哈!
private void logout(String message){
PrintWriter out = null;
try{
out = new PrintWriter(new FileOutputStream("webapps/FirstWpp/test.txt",true));
out.print(new java.util.Date().toLocaleString()+"::Form ContextListener:"+message);
out.close();
}catch(Exception e){
out.close();
e.printStackTrace();
}
}
这样的话是可以直接调用 这个方法就可以将异常写到一个日志文件中去了哈哈!
[是不是要加一个XML配置啊?]
里面的一个配置文件如下:
com.jspdev.ch8.MyServletContextListener
如果在web.xml中写这样的配置的话必须要在JAVA代码中写上它的实现接口的哦!
别少了的哦!这两个是一致的哦!
原来WEB.XML与Servlet是一致的才行的哦!
8.监听HTTP会话
9.开始Filter哦!
过滤来自客户端的一些相关信息哦!
比如说可以统一编码,对客户端进行统一认证处理等!
实例一:开发一个字符编码的过滤代码:
如果想开发一个过滤器的话要实现三个接口方法的哦!
init()
destory()
doFilter()
public void destroy() {
// TODO Auto-generated method stub
this.filterConfig = null;
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// 处理过滤的方法哦。这个方法最重要的哦!
HttpServletRequest request = (HttpServletRequest)arg0;
request.setCharacterEncoding(targetEncoding);
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = arg0;
this.targetEncoding = arg0.getInitParameter("encoding");
}
OK。代码写完了之后就可以来配置XML了哦!
encoding
com.jspdev.ch8.EncodingFileter
//赋给了一个参数值!
encoding //参数名
gb2312 //参数值
哈哈。原来WEB.XML功能是如此地强大的啊!
我明白了其实XML很容易的哦!
第一个是名字
然后是哪里即哪里的类
加上参数就OK了哈哈!
encoding
/*
表示我们这个过滤是针对于哪些个目录生效的哦!
如果写/*表示对任何URL地址都是有效的哦!
对于里面所有的文件都会生效的哦!
[所以说服务器端的东西可运行性不错的哦!]
注意:
架设我们的web.xml中是如此配置
ContentServlets
/ContentServlets
项目名称为:Process
则访问这个Servlets的URI为:
表单如果想要提交到此Servlets的话可以这样: