Servlet初识

打开API文档,我们可以看到Servlet接口是在javax.servlet包中。该接口定义了五种方法:
public void init(ServletConfig config) throws ServletException
public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException
public void destroy()
public ServletConfig getServletConfig()
public java.lang.String getServletInfo()
 
下面是这五种方法的作用:
init():在Servlet实例化后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前可以完成一些初始化的工作。例如:建立数据库连接,获取配置信息等。对于每一个Servlet实例,init()方法只能被调用一次。init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可以和它的Servlet容器进行通信。
 
service():容器调用service()方法来处理客户端的请求。要注意的是,在service()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象(类型为ServletRequest)和一个用于对客户端进行响应的响应对象(类型为ServletResponse)作为参数传递给service()方法。在service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。
 
destroy():当容器检测到一个Servlet对象应该从服务中被移除的时候,容器会调用该对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久存储设备中。例如:将内存中的数据保存到数据库中,关闭数据库的连接等。当需要释放内存或容器关闭时,容器就会调用Servlet对象的destroy()方法。在Servlet容器调用destroy()方法前,如果还有其他的线程正在service()方法中执行,容器会等待这些线程执行完毕或等待服务器设定的超时值到达。一旦Servlet对象的destroy()方法被调用,容器不会再把其他的请求发送给该对象。如果需要该Servlet再次为客户端服务,容器会重新产生一个Servlet对象来处理客户端的请求。在destroy()方法调用后,容器会释放这个Servlet对象,在随后的时候内,该对象会被Java的垃圾收集器所回收。
 
getServletConfig():该方法返回容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含了Servlet的初始化参数。
 
getServletInfo():返回一个String类型的字符串,其中包括了关于Servlet的信息,例如,作者、版本和版权。该方法返回的应该是纯文本字符串,而不是任何类型的标记(HTML,XML等)。
 
2、第一个servlet
servlet
public class FirstServlet extends HttpServlet{
//get请求的数据在这个函数中处理
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(req, resp);
 
PrintWriter printWriter=resp.getWriter();
 
ServletConfig servletConfig=getServletConfig();
 
printWriter.println("encoding: "+servletConfig.getInitParameter("encoding"));
printWriter.println("<br/>");
 
ServletContext servletContext=getServletContext();
 
Enumeration<String> enumeration=servletContext.getInitParameterNames();
while(enumeration.hasMoreElements()){
String nameString=enumeration.nextElement();
String valueString=servletContext.getInitParameter(nameString);
printWriter.println("name :"+nameString);
printWriter.println("<br/>");
printWriter.println("value :"+valueString);
printWriter.println("<br/>");
}
}
 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {
PrintWriter printWriter=resp.getWriter();
printWriter.println("this is dopost");
};
}
 
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Day6_25</display-name>
  <welcome-file-list>
    <welcome-file>welcome.html</welcome-file>
    
  </welcome-file-list>
  
  <servlet>
   <servlet-name>FirstServlet</servlet-name>
   <servlet-class>com.fan.servlet.FirstServlet</servlet-class>
   //可以在代码中通过servletconfig获取下面定义的数据
   <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
   </init-param>
   //可以在服务器启动时候初始化
   <load-on-startup>1</load-on-startup>
  </servlet>
  //处理/firstservlet 的请求使用firstservlet
  <servlet-mapping>
   <servlet-name>FirstServlet</servlet-name>
   <url-pattern>/FirstServlet</url-pattern>
  </servlet-mapping>
  
  //可以通过servletcontext获取下面定义的数据
  <context-param>
   <param-name>first</param-name>
   <param-value>first-value</param-value>
  </context-param>
  <context-param>
   <param-name>second</param-name>
   <param-value>second-value</param-value>
  </context-param>
  
</web-app>
 
get.xml
<!DOCTYPE html>
<body>
<form action="/Day6_25/HelloWorldServlet" method="get">
濮撳悕:<input type="text" size="10"></input><p/>
瀵嗙爜:<input type="password" size="20"></input><p/>
<input type="submit" value="鎻愪氦"></input><p/>
</form>
</body>
post.xml
<!DOCTYPE html>
<body>
<form action="/Day6_25/HelloWorldServlet" method="post">
濮撳悕:<input type="text" size="10"></input><p/>
瀵嗙爜:<input type="password" size="20"></input><p/>
<input type="submit" value="鎻愪氦"></input><p/>
</form>
</body>

 

posted on 2016-07-06 16:51  Just_Boy  阅读(99)  评论(0)    收藏  举报