1.直接继承自HttpServlet
2.在doPost(doGet)方法中写入相应和序代码
3.配置web.xml文件
Servlet本身也是一个java类,所以必须存放在web-inf/classes之下
eg:
package whc.java.test;
import java.io*;
//HttpServlet属于javax.servlet包下
import java.servlet.*;
//HttpServletRequest 、HttpServletResponse存放在javax.servlet.http包下
import.javax.servlet.http*;
public class TestServlet extends HttpServlet
{
public void doGet(HttpServletRequst req,HttpServletResponse resp) throws IOException,ServletException
{
printWriter out =resp.getWrite();
{
out.println("hello world");
out.close();
}
}
}
jsp程序的功能与Servlet一致,也就意味着Servlet程序同样可以被外部所访问,就必须有一个地址,只能通过web映射解决。
修改web.xml文件,可以配置映射地址。
//表示要使用一个Servlet
<servlet>
//web.xml文件内部起做用的名字
<servlet-name>whc</servlet-name>
//Servlet程序所在的包.类名称
<servlet-class>whc.java.test.TestServlet</servlet-class>
</servlet>
//Servlet映射地址
<servlet-mapping>
// 在web.xml文件内部起作用的名字,此名字与上面的一致
<servlet-name>whc</servlet-name>
//具体的映射路径,前面必须有一个/
<url-pattern>/index</url-pattern>
</servlet-mapping>
注:只要是web.xml文件修改,则必须重新启动服务器。
注意:
1.在编译Servlet时,有时会出现找不到servlet包的问题,这是因为servlet为jdk的扩展包,所以在使用时需要指定classpath,具体方法:
-set classpath=%Tomcat%/common/lib/servlet.jar
2.如果不指定classpath,可以采用如下方法:
-将servlet.jar文件拷贝到jdk安装路径下的jre/lib/ext下
doGet方法:娄客户端发送http请求使用get方法时就调用doGet()方法。http的缺醒方法就是GET.
doPost方法:当客户端发送http请求使用post方法时就调用doPost()方法。
基本的Servlet框架:
package whc.java.test;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServlet
{
//初始化
public void init(ServletConfig config )throws ServletException{}
//表示处理get请示
public void doGet(HttpServletRequest req,HttpServletResponse resq)throws IOException,ServletException
{}
public ovid doPost()throws IOException,ServletException
{}
public void destroy()
{}
}
Servlet生命周期:
1.初始化(1次)
默认情况下:在第一次使用Servlet程序时初始化,也可以在容器启动时初始化Servlet程序,通过配置web.xml文件:<load-on-startup>1(值大优先级高)</load-on-startup>
2.服务(doGet、doPost),直接输入地址就是get请求
调用多次
3.销毁(1次)
服务器关闭
此Servlet长时间不使用
生命周期补充:
关于Servlet初始化方法有两种
init():当不需要传递初始化参数时使用
init(ServletConfig config):如果有此种初始化方法,则上面的无参数初始化方法无效
当需要传递参数的时候使用些操作
在Servlet中解决路径的唯一原则:在地址来中拼奏出完整路径
Servlet接口 jsp内置对象
HttpServletRequest request
HttpServletResponse response
ServletConfig config
HttpSession Session,通过request对象取得
ServletContext application
取得两种方式(对应两种初始化方法)
1.无参数初始化方法/不写,直接取得
2.如果针对有参构造(init(ServletConfig))则必须通过config对象取得
------------------
package cn.mldn.lxh.servlet ;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
public class InitParameterServlet extends HttpServlet
{
// 初始化
// 要取得初始化参数,必须使用以下初始化方法
public void init(ServletConfig config) throws ServletException
{
// config对象中有取得初始化参数的方法:getInitParameter("参数名称")
String ref1 = config.getInitParameter("ref1") ;
String ref2 = config.getInitParameter("ref2") ;
String dd = config.getInitParameter("DBDRIVER") ;
System.out.println("REF1 => "+ref1) ;
System.out.println("REF2 => "+ref2) ;
System.out.println("DBDRIVER => "+dd) ;
}
// 表示处理get请求
public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
{
// System.out.println("** Servlet doGet处理 ...") ;
}
// 处理post请求
public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException
{
// System.out.println("** Servlet doPost处理 ...") ;
}
// 销毁
public void destroy()
{
// System.out.println("** Servlet 销毁 ...") ;
}
};
/*
<servlet>
<servlet-name>param</servlet-name>
<servlet-class>cn.mldn.lxh.servlet.InitParameterServlet</servlet-class>
<load-on-startup>0</load-on-startup>
<init-param>
<param-name>ref1</param-name>
<param-value>MLDN</param-value>
</init-param>
<init-param>
<param-name>ref2</param-name>
<param-value>LiXingHua</param-value>
</init-param>
<init-param>
<param-name>DBDRIVER</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>param</servlet-name>
<url-pattern>/ipar</url-pattern>
</servlet-mapping>