dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>java>jsp>文章内容
JSP入门实例教程2(2)-jsp和servlet的关系
来源: 作者:

这节我们讲讲jspservlet的关系,servletjsp的基础,那么什么是servlet呢?Servlet是一种基于webJava组件,它由容器管理,并动态生成其内容。Servlet是与平台无关的Java类,他们被编译成字节码,这些字节码可以被web服务器动态加载。当Web刚开始被用来传送服务时,服务提供者就已经意识到了动态内容的需要。Applet是为了实现这个目标的一种最早的尝试,它主要关注使用客户端平台来交付动态用户体验。与此同时,开发人员也在研究如何使用服务器平台实现这个目标。开始的时候,公共网关接口脚本是生成动态内容的主要技术。虽然使用得非常广泛,但CGI脚本技术有很多的缺陷,这包括平台相关性和缺乏可扩展性。为了避免这些局限性,Servlet技术因应而生,它能够以一种可移植的方法来提供动态的、面向用户的内容。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,Servlet有可能彻底取代CGI ,而且Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程) ,在性能优化方面,Servlet也比CGI有着更多的选择 Servlet具有的完善的APIServlet可以自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等,上面我们介绍了Servlet的概念和作用以及特点。那么下面我们先讲一讲Servletjsp的比较。

JSP是一种实现静态HTML和动态HTML混合编码的技术,JSP代码更加直观Servlet使用Java代码生成HTML页面,它更适合实现逻辑功能。

我们通过两幅图来说明jspservlet的关系。

 

Sun公司最初用htmlservlet的模式,可以说成功的替代了htmlCGI的模式,前台用html显示给用户,后台用servlet进行处理,然后把处理的结果显示给用户。从上面两幅图我们可以看出servlet就是纯粹的java程序,上图也反映了jsp转化成serlvet的过程,那么jsp到底是如何转换为servlet的呢,这个不用你操心了,既是服务器又是容器的tomcat已经提供转换机制了,上一节我们写了first.jsp。我们可以进入tomcat的安装目录,可以看到work的子目录,D:\tomcat5.5.122\apache-tomcat-5.5.12\work\Catalina\localhost\jspfirst\org\apache\jsp(我的tomcat安装在D盘)你会发现文件夹里有first_jsp.javafirst_jsp.class两个文件。first_jsp.java这个就是servlet的源文件,first_jsp.class是编译后的字节码。当我们在浏览器的地址栏里http://localhost:8080/jspfirst/first.jsp 敲入这个的时候,我们访问的就是这个firstjsp.class。然后转换为html文件显示给用户。

 我们在来看看第一节的那幅jsp访问过程图

 

  我们在这节和前两节已经把httpjsp转化成servlettranslated java source)和生成字节码,最终生成html显示给用户。

  那么有人会问,sun公司就用servlet就行了,为什么还提出jsp标准干嘛,请看如下代码:

pageContext = _jspxFactory.getPageContext(this, request, response,

                        null, true, 8192, true);

      _jspx_page_context = pageContext;

      application = pageContext.getServletContext();

      config = pageContext.getServletConfig();

      session = pageContext.getSession();

      out = pageContext.getOut();

      _jspx_out = out;

 

      out.write("<html>\r\n");

      out.write("<head><title>百家拳软件项目研究室</title></head>\r\n");

      out.write("<body>\r\n");

      out.write('\r');

      out.write('\n');

      out.print(name);

      out.write("\r\n");

      out.write("</body>\r\n");

      out.write("</html>\r\n");

大家会发现有out.write();这是输出html的标记,装入浏览器以后,浏览器就可以根据标记对html进行解释,把数据显示给用户。如果要输出50000个数据给用户看,那么就的有50000out.write();语句,那么这样做肯定不利于代码的维护,所以sun公司推出了jsp标准,jsphtmljava代码分离。显示给用户的那部分完全可以用html,而不像servlet那样转换为html。有的人还会提出这样的疑问,既然jspservlet好的多,为什么有时候还用servlet呢,因为servlet在逻辑方面的作用很大。以后如果大家学习mvc模式,大家会发现servlet在其中只作为控制器来用,负责控制请求和响应的。用jsp作为表现层,用来将响应显示给用户。我们这里简单的给大家讲解一下servlet的知识以及如何在tomcat中发布servlet应用程序。

我们写个简单的servlet代码,从代码中我们讲解servlet中的详细方法。

import java.io.* ;

// HttpServlet属于javax.servlet.http包下

// ServletException属于javax.servlet包下

import javax.servlet.* ;

// HttpServletRequestHttpServletResponse存放在javax.servlet.http包下

import javax.servlet.http.* ;

 

public class SimpleServlet extends HttpServlet

{

       // 表示处理get请求

       public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException

       {

              PrintWriter out = response.getWriter() ;

              out.println("<HTML>") ;

              out.println("<HEAD>") ;

              out.println("<TITLE>THE FIRST SERVLET</TITLE>") ;

              out.println("</HEAD>") ;

              out.println("<BODY>") ;

              out.println("<H1>Hello World!!!</H1>") ;

              out.println("</BODY>") ;

              out.println("</HTML>") ;

              out.close() ;

       }

       public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException

       {

              this.doGet(request,response) ;

       }

};

例子下载

这里有个doGet方法和doPost方法。doGet方法是处理客户端的请求的。doPost方法是发送信息的。这个代码是写完了,那么我们如何发布servlet程序呢。

首先我们进入tomcat的安装目录,在webapps中创建一个文件夹叫做simpleservlet,和发布jsp的文件一样将ROOT中的WEBINFlib复制到simpleservlet中,再在WEB-INF下创建一个classes文件夹,把SimpleServlet.java文件放到这个文件夹里。对SimpleServlet.java进行编译,你可以ant工具进行编译,但我不提倡用它。你可以直接编译SimpleServlet.java文件,但是你会发现提示很多的错误(找不到HttpServletRequestHttpServletResponse类)这是因为你没有载入servletapi.jar的包,里面存有HttpServletRequestHttpServletResponse类。而servletapi.jar包放在tomcat的安装里的\common\lib中,你可以将servletapi.jar复制粘贴到你的jdk的安装目录\jre\lib\ext中,这次你再调用就可以成功编译了。因为这个java文件没有在web应用程序里,我们上节提到了webxml但没有详讲,其实他的用处之一就是用来配置servlet的,我们记事本将它打开,然后敲入以下代码:

<?xml version="1.0" encoding="utf-8"?>

<servlet>//声明一个servlet开始

  <servlet-name>simple</servlet-name>//servlet的名字是simple

  <servlet-class> SimpleServlet</servlet-class>//对应的类名,如果你将类文件放入包中你可以包名.类名

  </servlet>

  <servlet-mapping>//一个servlet映射的开始

  <servlet-name>simple</servlet-name>//servlet的名字是simple,这名字必须和上面的名字一样,如果不一样就无法关联在一起了。

  <url-pattern>/demo</url-pattern>//访问servlet的路径

  </servlet-mapping>//一个servlet映射的结束

例子下载

这时,我们再启动tomcat服务器,打开浏览器在地址栏里敲入URLhttp://localhost:8080/simpleservlet/demo 你可以成功的访问servlet了。注意:每一次修改webxml,你都的重新启动tomcat服务器,重新发布web应用程序。

Servlet的知识,我们就简单的讲这么多,其实servlet还有很多问题,像servlet的生命周期,过滤器,监听器等等。如果大家想研究这个我可以提供学习资料。

  下一节我们讲一讲jsp的基础,讲一讲jsp的基本语法。


上一篇:JSP入门实例教程3-jsp基本语法   下一篇:JSP入门实例教程2(1)-jsp与tomcat以及http协议
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·JSP入门实例教程
·什么是Servlet
·JSP常用内置对象使用说明
·JSP自定义标签由浅到深详细讲解
·JSP自定义标签由浅到深详细讲解
·Java Servlet技术
·Javax.servlet API的特征
·一个简单的jsp注册页面
·JSTL操作数据库示例
·JSP入门实例教程13-MVC模式
·JSP入门实例教程12-jstl处理数
·JSP入门实例教程11-jstl处理xml
  相关文章
·JSP入门实例教程3-jsp基本语法
·JSP入门实例教程2(1)-jsp与tomca
·JSP入门实例教程4-jsp内置对象
·JSP入门实例教程1-什么是jsp?为
·JSP入门实例教程5-简单的动作标
·JSP入门实例教程例子的使用方法
·JSP入门实例教程6-jsp自定义标签
·JSP入门实例教程7-JSTL+EL语言
·JSP入门实例教程8-jsp错误处理
·JSP入门实例教程9-jsp的权限设置
·JSP入门实例教程
·JSP入门实例教程10-jstl国际化
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763