servlet 查看javaee api
servlet是一个小的java程序,运行在服务器中,接收和响应从客户端(浏览器)发送过来的请求
1、实现servlet接口,重写5个方法
2、配置web.xml文件(在MyEclipse的WEB-INF下) 右键open with的Myeclipse XML Editor
先配置Servlet信息
<servlet>
配置Servlet名称,名称必须唯一
<servlet-name>ServletDemo1</servlet-name>
配置Servlet的完全路径(包名+类名) 最好用创建的类名右键复制 copy Qualified Name
<servlet-class>cn.idcast.Servlet.ServletDemo1</servlet-class>
</servlet>
配置Servlet映射(访问路径)
<servlet-mapping>
配置Servlet名称,和上面的名称必须相同
<servlet-name>ServletDemo1</servlet-name>
配置虚拟路径(访问路径) 必须唯一
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
3、把项目发布到网上 MyEclipse下面的那个类似邮筒的按键(Deploy MyEclipse j2ee Project to Server),选择Project和add Tomact的版本
4、启动Tomact
5、访问
Servlet的生命周期
生命周期:实例被创建,对外提供服务,最后销毁。
1、Servlet被创建后,然后调用init方法进行初始化。
void init(ServletConfig config)
注意:第一次访问的时候实例才被创建,而不是服务器一启动就创建。
* init只被调用一次。
2、从客户端发送的所有请求是service方法进行处理的。
void service(ServletRequest req, ServletResponse res)
* 有几次请求,service就调用几次
3、从服务器中移除服务,调用destory方法进行移除。
void destory()
* Servlet实例当服务器关闭或者手动移除的时候,实例被消除
* destory只被调用一次
******* Servlet的生命周期:第一次请求的时候,Servlet实例被创建,立即调用init方法进行初始化,实例通过service方法提供服务,服务器关闭或者移除服务时,调用destory方法进行销毁。
Servlet和其他类的关系
Servlet接口 – GenericServlet(已经重写了5个方法)- HttpServlet(继承GenericServlet,实现了Servlet接口)
* 如果只想重写init方法的话,只需要重写无参的init方法
开发步骤(最终)
1、编写一个类,继承HttpServlet
2、重写doGet和doPost方法
3、在web.xml进行配置
MyEclipse中创建Servlet
1、Inherited abstract methods和下面的2个方法的沟去掉 只留下doGet和doPost方法
2、Servlet/JSP Mapping URL(虚拟路径)后面的最好修改一下
修改Servlet模板
1、找到MyEclipse的安装路径 如D:\MyEclipse\Common\plugins\com.genuitec.eclipse.wizardx.版本.jar
2、右键压缩工具打开-templates-Servlet.java
3、然后把Servlet.java拖到桌面,打开,删除掉doGet和doPost方法里面无关的东西,并在doPost里面加上doGet(request,response);
4、拖回去之前,把MyEclipse关闭
Servlet自动加载
Servlet默认是第一次访问时候创建实例,通过配置,服务器启动才创建实例。
在< Servlet >标签下
<load-on-startup>正整数</load-on-startup> 正整数的值越小,优先级越高
配置虚拟路径(访问路径)
<servlet-mapping>
<url-pattern>/demo5</url-pattern>
</servlet-mapping>
1、完全路径匹配
以/开头的 /demo5 或者/servlet/demo5
访问:
2、目录匹配
/*
访问:http://localhost/*
3、扩展名匹配
*.do 或者*.action
访问:http://localhost/demo5.do
优先级:完全路径匹配>目录匹配>扩展名匹配
配置初始化参数
在<Servlet></Servlet>标签下配置
<init-param>
<param-name>assasasa</param-name>
<param-value>fdsfdsfsd<param-value>
</init-param>
*在某个Servlet配置,就要在那个Servlet中获取
ServletConfig对象 和配置文件相关
方法:
String getNameServlet() 获取配置文件中Servlet的名称
String getInitParameter(String name) 获取初始化参数,最后得到的是<param-value>里面的值
Enumeration getInitParameterNames() 获取初始化的参数们,返回Enumeration。Enumeration里面的方法:hasMoreElements()和nextElement()
用while循环遍历,方法是hasMoreElements,然后用nextElement获取,返回String,最后用getInitParameter获取参数String
输出的话记得是要用Tomact启动,通过访问路径得到
package cn.idcast.Servlet;import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemo3 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得ServletConfig ServletConfig sc = getServletConfig(); System.out.println(sc.getServletName()); //获得初始化参数,得到的value里面的值 String con = sc.getInitParameter("username"); System.out.println(con); //获取初始化的参数们 Enumeratione = sc.getInitParameterNames(); while (e.hasMoreElements()) { String name = e.nextElement(); String value = sc.getInitParameter(name); System.out.println(value); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
这个是配置文件里面的参数
ServletDemo3 cn.idcast.Servlet.ServletDemo3 username 123456 passoword 11111 ServletDemo3 /Demo3
结果为