servlet介绍
Servlet技术是SUN提供的一种开发动态网页的核心组件之一,可以方便的开发动态网页。
Servlet担当客户请求(web浏览器或其他http客户程序)与服务器响应(Http服务器上的数据库或应用程序)的中间层。
一个Servlet其实就是一个运行在web server上得一个java程序。
servlet接口方法介绍
public class myservlet implements Servlet {
public void init(ServletConfig config) throws ServletException {
//生命周期方法,在servlet对象创建后马上调用,只执行一次
System.out.println("init()");
//可获取初始化参数信息
String st=config.getInitParameter("p1");
System.out.println(st);
}
@Override
public void destroy() {
//生命周期方法,在servlet对象销毁前调用,只执行一次
System.out.println("destroy()");
}
@Override
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
//生命周期方法,每次处理请求都会调用这个方法
System.out.println("service()");
}
@Override
public ServletConfig getServletConfig() {
//获取servlet配置信息
System.out.println("servletconfig()");
return null;
}
@Override
public String getServletInfo() {
//获取servlet信息
System.out.println("getServletInfo()");
return "This is my default servlet created by Eclipse";
}
}
xml配置
<servlet>
<servlet-name>AServlet</servlet-name>
<servlet-class>servlet01.myservlet</servlet-class>
<init-param>
<param-name>p1</param-name>
<param-value>v1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>AServlet</servlet-name>
<url-pattern>/A</url-pattern>
</servlet-mapping>
浏览器运行后,控制台输出效果:
init()
v1
service()
ServletContext:
一个项目只有一个servlet对象,在tomcat启动时就创建,我们可以在N多个servlet中来获取这个唯一对象进行操作,实现多个servlet之间的数据传递。
获取ServletContext对象:
1.Servlet中获取:在 void init(ServletConfig config)方法中,调用config.getServletContext()获得;
2.GenericeServlet或HttpServlet中获取:通过this.getServletContext获得;
ServletContext方法:
1.setAttribute("key","value") :在ServletContext中保存一个域属性。
2.getAtrribute(String name) :获取ServletContext中之前存储的数据。
3.removeAttribute(String name):移出此域属性。
做一个小案例:
先创建一个servlet,并在ServletContext中存入键值对
public class AServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext appliction=this.getServletContext();
appliction.setAttribute("name", "老铁");
}
再创建一个servlet通过键读取值
public class Bservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
ServletContext appliction=this.getServletContext();
String st=(String)appliction.getAttribute("name");
System.out.println(st);
}
}
配置xml还是一样
控制台运行效果:
老铁
ServletContext公共初始参数:在多个servlet中共享参数。
例:
配置xml文件
<servlet>
<servlet-name>Bservlet</servlet-name>
<servlet-class>org.test.Bservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Bservlet</servlet-name>
<url-pattern>/Bservlet</url-pattern>
</servlet-mapping>
<context-param>
<param-name>p1</param-name>
<param-value>v1</param-value>
</context-param>
创建servlet获取公共参数
public class Bservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletContext app=this.getServletContext();
String s=(String)app.getInitParameter("p1");
System.out.println(s);
}