servlet

来源:互联网 发布:周杰伦和吴宗宪 知乎 编辑:程序博客网 时间:2024/06/06 02:58

Servlet其实就是一个Java类,所以其创建方法和创建Java类完全相同。所有的Servlet类都必须继承HttpServlet类。
例:
ServletDemo.java文件
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 ServletDemo extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
     PrintWriter out=response.getWriter();
     out.println("This is my first Servlet Application!");
 }
}
web.xml文件配置

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
  <display-name>servlet</display-name>
  <description>
     servlet
  </description> 
 
  <servlet>
     <servlet-name>ServletDemo</servlet-name>
     <servlet-class>ServletDemo</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/ServletDemo</url-pattern>
  </servlet-mapping>
</web-app>

Servlet从生成到销毁必须进行如下几个步骤:
1.生成Servlet,加载到Servlet Engine中,并通过调用其init()方法来进行初始化。
2.通过提供的响应方法来处理客户端的请求。
3.调用destroy()方法进行销毁,并通过垃圾收集器进行收集清理。

HttpServlet常用方法
doGet方法用来处理客户端浏览器直接访问和表单get方式提交的表单。
例:
LoginForm.jsp文件
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
  <head>
    <title>LoginForm</title>
  </head>
  <body>
  <center>
    <form action="servlet/DoGetDemo" method="get">
     <table>
       <tr>
        <td colspan="2">用户登陆</td>
       </tr>
       <tr>
         <td>用户名:</td>
         <td><input type="text" name="username"></td>
       </tr>
        <tr>
         <td>密&nbsp;码:</td>
         <td><input type="password" name="userpassword"></td>
       </tr>
        <tr>
         <td colspan="2">
         <input type="submit" value="登陆"/>
         <input type="reset" value="重置"/>
         </td>
        </tr>
     </table>
    </form>
  </center>
  </body>
</html>
DoGetDemo.java文件:一个Servlet文件
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 DoGetDemo extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html;charset=gb2312");
  PrintWriter out = response.getWriter();
  request.setCharacterEncoding("gb2312");
  String username=request.getParameter("username");
  String password=request.getParameter("userpassword");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>DoGet</TITLE></HEAD>");
  out.println("  <BODY>");
  out.print("用户名:"+username+"<br>");
  out.print("密码:"+password+"<br>");
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();
 }
}
xml配置:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
  <display-name>DoGet</display-name>
  <description>
     DoGet
  </description> 
 
  <servlet>
     <servlet-name>DoGetDemo</servlet-name>
     <servlet-class>DoGetDemo</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>DoGetDemo</servlet-name>
     <url-pattern>/servlet/DoGetDemo</url-pattern>
  </servlet-mapping>
</web-app>

doPost方法来处理表单post方式提交的表单,|不能处理客户端浏览器直接访问|(与doGet的区别)。
service方法来处理客户端浏览器直接访问和表单get方式提交的表单以及表单post方式提交的表单。
是doGet和doPost的综合。
接口:
HttpServletRequest接口的使用和JSP内置对象的request对象非常类似。request对象其实就是HttpServletRequest接口的一个实例,不过其实例化过程是自动的无须自定义。
在Servlet中request对象也是由容器初始化的,如果在程序中使用request对象,直接使用就是,无须手动初始化。
HttpServletResponse接口的使用和JSP内置对象的response对象非常类似。response对象其实就是HttpServletResponse接口的一个实例,不过其实例化过程是自动的无须自定义。
在Servlet中response对象也是由容器初始化的,如果在程序中使用response对象,直接使用就是,无须手动初始化。
HttpSession接口的使用和JSP内置对象的session对象非常类似。session对象其实就是HttpSession接口的一个实例,不过其实例化过程是自动的无须自定义。
在Servlet中session对象必须通过request对象的getSession()方法来获得。
ServletContext接口的使用和JSP内置对象的application对象非常类似。application对象其实就是ServletContext接口的一个实例,不过其实例化过程是自动的无须自定义。
在Servlet中application对象必须通过HttpServlet对象的getServletContext()方法来获得。