Servlet实例

编写servlet

   我们们先来看看这个servlet,把一个含有客户信息、所有递交的参数以及所有服务器系统属性的HTML页面返回给客户。

   编写响应HTML请求的servlet只需要两步:

   1、创建一个扩展了javax.servlet.http.HttpServlet接口的servlet类。

      javax.servlet.http.HttpServlet这个接口是javax.servlet.GenerieServlet的扩展接口,

      它包含了分析HTTP首部和将客户端信息打包到javax.servlet.http.HttpServletRequest类中的那些代码。

   2、重写doGet和doPost方法之一或全部。这里是servlet实际完成工作的地方。

      servlet也可以重写init和destroy方法以实现servlet特殊的初始化和析构。

      重写init和destroy的典型例子就是在init方法中建立数据库连接并在destroy方法中断开它。

    在init和destroy方法中没有完成任何动作,它们只是用来说明如何重写这两个方法。

package javaservlets.samples;
   import javax.servlet.*;
   import javax.servlet.http.*;
 
   public class Properties extends HttpServlet
   {
      public void doPost(HttpServletRequest req,HttpServletResponse resp)
      throws ServletException,java.io.IOException
      {
         // Set the content type of the response
         resp.setContentType("text/html");
         // Create a PrintWriter to write the response
         java.io.PrintWriter out=new java.io.PrintWriter(resp.getOutputStream());
         // Print the HTML header
         out.pritln("<html>");
         out.pritln("head");
         out.pritln("<title>Java Servlets Sample-Properties<title/>");
         out.pritln("</head>");
         out.pritln("<h2><center>");
         out.pritln("Information About You</center></h2>");
         out.pritln("<br>");
         // Create a table with infromation about the client
         out.pritln("<center><table border>");
         out.println("<tr>");
         out.pritln("<td>Method</td>");
         out.pritln("<td>"+req.getMethod()+"</td>");
         out.pritln("</tr>");
         out.pritln("<tr>");
         out.pritln("<td>User</td>");
         out.pritln("<td>"+req.getRemoteUser()+"</td>");
         out.pritln("</tr>");
         out.pritln("<tr>");
         out.pritln("<td>Protocol</td>");
         out.pritln("<td>"+req.getProtocol()+"</td>");
         out.pritln("</tr>");
         java.util.Enumeration enum=req.getParameterNames();
         while(enum.hasMoreElements()){
            String name=(String)enum.nextElement();
            out.pritln("<tr>");
            out.pritln("<td>"Parameter'"+name+"'</td>");
            out.pritln("<td>"+req.getParameter(name)+"</td>");
            out.pritln("</tr>");
         }
         out.pritln("</table></center><br><hr><br>");
          //Create a table with infromation about the server
         out.pritln("<h2><center>");
         out.pritln("Server Properties</center></h2>");
         out.pritln("<br>");
         out.pritln("<Center><table border width=80%>");
         java.util.Properties props=System.getProperties();
         enum=props.propertyNames();
         while(enum.hasMoreElementes()){
            String name = (String)enum.nextElement();
            out.pritln("<tr>");
            out.pritln("<td>"+name+"</td>");
            out.pritln("<td>"+props.getProperty(name)+"<>");
            out.pritln("</tr>");
         }
         out.pritln("</table></center>");
         //Wrap up
         out.println("</html>");
         out.flush();
      }
      
      pulbic void init(ServletConfig cfg)
      throws ServletException
      {
         super.init(cfg);
      }
      
      public void destroy()
      {
         super.destroy();
      }
   }

   请注意这里是如何使用HttpServletRequest对象来收集客户信息的。另外,还要注意我们们通过HttpServletResponse对象获得的输出流,把格式化的HTML发送给客户;通过创建使用这个输出流的Print Writer对象,向客户发送格式化的HTML数据变得非常容易。


Servlet总结

1,什么是Servlet
2,Servlet有什么作用
3,Servlet的生命周期
4,Servlet怎么处理一个请求
5,Servlet与JSP有什么区别
6,Servlet里的cookie技术
7,Servlet里的过滤器
8,Servlet里的监听器


一,什么是Servlet?

Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),

是按照Servlet规范编写的一个Java类。


二,Servlet有什么作用?

主要是处理客户端的请求并将其结果发送到客户端。


三,Servlet的生命周期?

Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。
初始化阶段:

1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。

3,Servlet容器创建一个servlet对象。

4,Servlet容器调用servlet对象的init方法进行初始化。

运行阶段:

当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。

然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的

信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和

servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。

销毁阶段:

当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,

同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放

servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。

在这里该注意的地方:

在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户

端访问的次数


四,Servlet怎么处理一个请求?

当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。

在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象

传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。


五,Servlet与JSP有什么区别?

1,jsp经编译后就是servlet,也可以说jsp等于servlet。

2,jsp更擅长页面(表现)。servlet更擅长逻辑编辑。 (最核心的区别)。

3,在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,

JSP位于MVC设计模式的视图层,而Servlet位于控制层。

 

六,Servlet里的cookie技术?

cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段,是由Netscape公司开发出来的。

cookie技术的好处:

    1,Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。

    2,Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。
创建一个cookie

//里面的两个参数分别是cookie的名和cookie的值
response.addCookie(new Cookie("abc","10000000"));

使用cookie

Cookie[] cook =request.getCookies();//用一个Cookie数组来接收
for(int j=0;j<cook.length;j++){//通过循环来打印Cookie
        cook[j].getName()://取cookie的名  
        cook[j].getValue()://去cookie的值
}

七,Servlet里的过滤器?

过滤器的主要作用

1,任何系统或网站都要判断用户是否登录。

2,网络聊天系统或论坛,功能是过滤非法文字

3,统一解决编码

(2)怎么创建一个过滤器:

1,生成一个普通的class类,实现Filter接口(javax.servlet.Filter;)。

2,重写接口里面的三个方法:init,doFilter,destroy。

3,然后在web.xml配置过滤器。


八,Servlet里的监听器?

* 监听器的作用:自动执行一些操作。
* 三种servlet监听器:对request的监听。对session的监听。对application的监听。

* 怎么创建一个session监听器:

1,生成一个普通的class类,如果是对session的监听,则实现HttpSessionListener。

2,然后重写里面的五个方法:

public void sessionCreated(HttpSessionEvent arg0) {} // 创建
public void sessionDestroyed(HttpSessionEvent arg0) {} // 销毁
public void attributeAdded(HttpSessionEvent arg0) {} // 增加
public void attributeRemoved(HttpSessionEvent arg0) {} // 删除
public void attributeReplaced(HttpSessionEvent arg0) {} // 替换


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值