随笔-42  评论-42  文章-0  trackbacks-0
       一 Servlet 与 JSP

   Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。
  
   高效

     在传统的CGI(Common Gateway Interface:公共网关接口)中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。

    方便

     Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

     功能强大

在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

    可移植性好

     Servlet用Java编写,Servlet API具有完善的标准。因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。

    节省投资

    不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

 
JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术。
posted on 2008-06-24 17:28 BlueSunshine 阅读(223) 评论(4)  编辑  收藏 所属分类: 学习心得

评论:
# re: 学习 JSP 2008-06-24 17:33 | BlueSunshine
二 支持Servlet的Web服务器--tomcat

三 一个简单Servlet的基本结构

package servlet;

import
 java.io.IOException;
import
 java.io.PrintWriter;

import
 javax.servlet.http.HttpServlet;
import
 javax.servlet.http.HttpServletRequest;
import
 javax.servlet.http.HttpServletResponse;

public class SomeServlet extends HttpServlet 
{
    
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException 
{
        PrintWriter out 
=
 resp.getWriter();
    }

}


   如果某个类要成为Servlet,则它应该从HttpServlet 继承,根据数据是通过GET还是POST发送,覆盖doGet、doPost方法之一或全部。doGet和doPost方法都有两个参数,分别为HttpServletRequest 类型和HttpServletResponse 类型。HttpServletRequest提供访问有关请求的信息的方法,例如表单数据、HTTP请求头等等。HttpServletResponse除了提供用于指定HTTP应答状态(200,404等)、应答头(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一个用于向客户端发送数据的PrintWriter 。对于简单的Servlet来说,它的大部分工作是通过println语句生成向客户端发送的页面。

   注意doGet和doPost抛出两个异常,因此你必须在声明中包含它们。另外,你还必须导入java.io包(要用到PrintWriter等类)、javax.servlet包(要用到HttpServlet等类)以及javax.servlet.http包(要用到HttpServletRequest类和HttpServletResponse类)。

    最后,doGet和doPost这两个方法是由service方法调用的,有时你可能需要直接覆盖service方法,比如Servlet要处理GET和POST两种请求时。
  回复  更多评论
  
# re: 学习 JSP--基础篇 2008-06-25 12:51 | BlueSunshine

四 处理表单数据

  Java Servlet的好处之一,只需要简单地调用一下HttpServletRequest的getParameter方法、在调用参数中提供表单变量的名字(大小写敏感)即可,而且GET请求和POST请求的处理方法完全相同。

   getParameter方法的返回值是一个字符串,它是参数中指定的变量名字第一次出现所对应的值经反编码得到得字符串(可以直接使用)。如果指定的表单变量存在,但没有值,getParameter返回空字符串;如果指定的表单变量不存在,则返回null。如果表单变量可能对应多个值,可以用getParameterValues来取代getParameter。getParameterValues能够返回一个字符串数组。

   最后,虽然在实际应用中Servlet很可能只会用到那些已知名字的表单变量,但在调试环境中,获得完整的表单变量名字列表往往是很有用的,利用getParamerterNames方法可以方便地实现这一点。getParamerterNames返回的是一个Enumeration,其中的每一项都可以转换为调用getParameter的字符串。

  回复  更多评论
  
# re: 学习 JSP--Servlet 2008-06-25 14:45 | BlueSunshine
五 Servlet的service方法

  service()可以涵盖doGet()和doPost()。

public class SomeServlet extends HttpServlet {
    @Override
    
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out 
= resp.getWriter();
    }

}

 
这样写,就可以不用再写doGet()和doPost(),因为service()可以处理get请求和post请求。   回复  更多评论
  
# re: 学习 JSP--Servlet 2008-06-25 14:51 | BlueSunshine

六 Http的一个会话对象Session

public class SomeServlet extends HttpServlet {
    @Override
    
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session 
= req.getSession();
        session.setAttribute(
"name""chh");
    }

}
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: