要得到javax.servlet.jsp包需要下载jsp-api.jar。
为了编译方便需要把 servlet-api.jar 和 jsp-api.jar 和其他 jar 包都放在一起,在 ant build 的时候就会一并被拷到 Web 项目的 WEB-INF/lib 下,不过这次因此出现了一个 jsp 页面的编译错误,所有的 jsp 页面打开都会在页面上报编译错误,后台无任何信息。考虑到 jsp 页面的编译可能和 jsp-api.jar 有关,于是将 WEB-INF/lib 下的 servlet-api.jar 和 jsp-api.jar 移走,问题解决。
后来发现放在里面的这两个包是 tomcat5.5 的,是 JSP 2.0 规范的,而部署的服务器是 tomcat 6.0 是 JSP 2.1 规范的,两者可能有一定的冲突,才导致这样的错误。
⑵ servlet 来自哪一个包,父类
在J2EE中跟Servlet相关的一个包是javax.servlet,其中最基本的Servlet被声明为一个接口javax.servlet: Interface Servlet,这是Servlet最高层次的一个抽象,它是和网络协议无关的。同样在javax.servlet中,实现了一个类 javax.servlet: class GenericServlet,这个类实现了Servlet接口,也是和协议无关的。而这个类是构建其他和协议相关的Servlet子类型的通用的父类(至少HttpServlet是从它继承而来的,从它的名字也能看出这一点)。
也就是说Servlet所适用的网络协议可以是多种多样的,比如HTTP,FTP,SMTP,TELNET等,但是就目前而言,只有HTTP服务已经形成了标准的Java组件。对应的软件包有两个javax.servlet.http和javax.servlet.jsp,分别对应我们要讲解的Servlet和JSP编程。我们通常所说的Servlet编程主要就是指针对HTTP的Servlet编程,用到的就是javax.servlet.http包中的类(典型的就是HttpServlet类),实际上Java Servlet编程的概念要更广一些,在这里我们也就约定俗成的使用Servlet来指代HTTP Servlet的编程,这点读者是需要了解的。由于JSP最终都是要经过JSP引擎转换成Servlet代码的,而且Servlet编程和一般的Java编程是没有大的区别的,只需要了解一定的规范即可,所以我们在这里先讲解Servlet的编程,这样对以后理解JSP是很大的有好处的,尽管在使用的时候可能JSP更为简单一些。
目前,Servlet引擎一般是第三方的插件,它通过一定的方法连接到Web服务器,Servlet引擎把它识别为Servlet请求的那些HTTP请求截获下来处理,而其他的HTTP请求由Web服务器按照通常的方式来处理,Servlet引擎会装载合适的Servlet到内存中,如果Servlet还没有运行的话,会分配一个可以使用的线程来处理请求,再把Servlet的输出返回到发出请求的Web客户机。
Java Servlet和Java Applet正好是相对应的两种程序类型,Applet运行在客户端,在浏览器内执行,而Servlet在服务器内部运行,通过客户端提交的请求启动运行,读者在学习过程可以作简单的比较。
由于Servlet是用Java编写的,所以它与生俱来就有跨平台的特性,因此Servlet程序的设计完全和平台是无关的,同样的Servlet完全可以在Apache,IIS等不同Web服务器上执行,不管底层的操作系统是Windows,Solaris,Mac,Linux还是其他的能支持Java的操作系统。
Servlet是跟普通的Java程序一样,是被编译成字节码后由JVM执行的。相比传统的CGI,尽管CGI是用本地代码直接执行的,但是由于每次客户端发出请求,服务器必须启动一个新的程序来处理请求,这就把高负载强加给了服务器资源,尤其如果CGI使用脚本语言编写时,如perl,服务器还必须启动语言解释程序,程序越多,占用的内存就越多,消耗CPU也越多,严重影响系统性能。
Servlet运行于Servlet引擎管理的Java虚拟机中,被来自客户机的请求所唤醒,与CGI不同的是,在虚拟机中只要装载一个Servlet就能够处理新的请求,每个新请求使用内存中那个Servlet的相同副本,所以效率比CGI来得高。如果采用服务器端脚本,如ASP,PHP,语言解释程序是内置程序,因此可以加快服务器的运行,但是效率还是比不上准编译的Servlet。实际的使用也已经证明,Servlet是效率很高的服务器端程序,很适合用来开发Web服务器应用程序。
Java Servlet有着十分广泛的应用。不光能简单的处理客户端的请求,借助Java的强大的功能,使用Servlet还可以实现大量的服务器端的管理维护功能,以及各种特殊的任务,比如,并发处理多个请求,转送请求,代理等
10.1.3 Servlet的运行环境
典型的Servlet运行环境有JSWDK,Tomcat,Resin等
⑶ Servlet与JSP有什么区别
Servlet与Jsp的区别 * Servlet中没有内置对象,原来Jsp中的内置对象都是必须通过HttpServletRequest对象,或由 HttpServletResponse对象生成。 * 对于静态的HTML标签,Servlet都必须使用页面输出流诼行输出。 总之,Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,至于Jsp中的 Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service 方法用于生成对客户端的响应。-Servlet的开发 Servlet通常称为服务器端小程序,用于处理和响应客户端的请求。 Servlet是个特殊的Java类,这个Java类必须继承HttpServlet。每个Servlet可以响应客户端的请求。 Servlet提供了不同的方法用于响应客户端请求。 * doGet : 用于响应客户端的get请求 * doPost : 用于响应客户端的post请求 * doPut : 用于响应客户端的put请求 * doDelete: 用于响应客户端的delete请求 * service(HttpServletRequest request, [可以响应客户端所有类型的请求] HttpServletResponse response) throws ServletException,java.io.IOException其他方法 * init(Servletconfig config) : 创建Servlet实例时,调用的初始化方法。 * destory() : 销毁Servlet实例时,自动调用的资源回收方法。-Servlet的配置 编译好的Servlet源文件并不能响应用户请求,还必须将其编译成class文件。将编译后的.class 文件放在WEB-INF/classes路径下,如果Servlet有包,则还应该将class文件放在对应的包路径下。 为了让Servlet能响应用户请求,还必须将Servlet配置在Web应用中。配置Servlet时,需要修改 web.xml文件。 配置Servlet需要配置两个部分: * 配置Servlet的名字:对应web.xml中的<servlet/>元素 * 配置Servlet的URL :对应web.xml中的<servlet-mapping/>元素-Servlet的生命周期 Servlet在容器中运行,其实例的创建以及销毁等都不是由程序员决定的,而是由容器进行控制的。 Servlet的创建有两个选择: *客户端请求对应的Servlet时,创建Servlet实例:大部分的Servlet都是这种Servlet *Web应用启动时,立刻创建Servlet实例:即load-on-startup ServletServlet的生命周期: Begin ---> 创建实例完成 ---> 初始化[init] ---> 响应客户端请求[doGet,doPost,service] ---> 被销毁[destroy] ---> End-使用Servlet作为控制器 使用Servlet作为表现层的工作量太大,所有的HTML标签都需要使用页面输出流生成。 因此使用Servlet作为表现层有如下三个劣势: * 开发效率低,所有的HTML标签都需使用页面输出流完成 * 不利于团队协作,美工人员无法参与Servlet界面的开发 * 程序可维护性差,即使修改一个按钮的标题,读需要重新编辑Java代码,并重新编译使用Servlet的MVC的架构实现: Jsp页面--> Servlet程序 --> Servlet根据条件转发新的Jsp页面-load-on-startup Servlet Servlet实例化的时机还有在Web应用启动时,即load-on-startup Servlet 应用启动时就启动的Servlet,通常是用于某些后台服务的Servlet,或者拦截很多请求的Servlet; 这种Servlet通常作为基础的Servlet使用,提供重要的后台服务。web.xml中的配置: 在<servlet/>元素中增加元素 <load-on-startup>1</load-on-startup>-访问Servlet的配置参数 配置Servlet时,还可以增加附加的配置参数,通过使用配置参数,可以实现更好的解除耦合, 避免将所有的参数以硬编码方式写在程序中。 访问Servlet配置参数要通过ServletConfig类的实例完成,ServletConfig提供如下方法: java.lang.String getInitParameter(java.lang.String name) [获取初始化参数]]
⑷ 如何查看Servlet,JSP的版本
找到jsp-api.jar和servlet-api.jar两个jar包,分别用winrar这类的软件打开,里面的META-INF文件夹下的MANIFEST.MF文件,里面有相应的版本号
jsp是2.1,servlet是2.5
⑸ 解决项目中jsp-api,servlet-api和tomcat中jar包冲突问题
向myeclipse中导入一项目发现缺少jar包,在tomcat里找了两个jar包jsp-api,servlet-api
执行时就会报异常
具体异常信息:
主要问题 :
项目中jsp-api,servlet-api和tomcat中lib下的jsp-api,servlet-api文件冲突所致
解决方法:
1.右击项目名称----properties----java Build Path----Add Library---myeclipse Libraries----javaEE5 Libraries复选框选中----finish
2.删掉WEB-INF下的jsp-api,servlet-api重新部署
3.成功
⑹ servlet和jsp之间的关系
1.JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
2.JSP编译后是"类版servlet"。
3.Servlet和JSP最主要的不权同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
⑺ 什么是JSP Servlet和JSP的关系
jsp是什么1 2楼说的很清楚了
其实java虚拟机是不认识jsp这种东西的, jsp在被使用的时候会被容器转内换容成servlet然后被调用
你去的你tomcat目录下的work\Catalina\localhost\下这个文件夹里能找到和你项目同名的文件,这里有你jsp转成的servlet的.java和class文件
⑻ jsp与servlet的区别
jsp和servlet的区别有以下几点:
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,回Jsp中的Java脚本如何答镶嵌到一个类中,由Jsp容器完成。
1、jsp经编译后就变成了Servlet。
2、jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。
3、Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletResponse对象以及HttpServlet对象得到。
4、而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。
(8)servletjsp包扩展阅读:
Servlet和JSP的不同点:
1、Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
2、而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
3、JSP侧重于视图,Servlet主要用于控制逻辑
4、Servlet更多的是类似于一个Controller,用来做控制。
参考资料来源:网络-servlet
⑼ servlet在哪个包下
tomcat目录下,lib文件夹中就有那两个包,servlet-api.jar和jsp-api.jar导这两个jar包:jsp-api 、servlet-api 开发JSP需要两个包:javax.servlet和javax.servlet.http;把jsp-api 、servlet-api 放到项目中的 web-inf/lib目录下即可。javax.servlet.http.HttpServletRequest是javax.servlet.http下的一个类,要像用它,必须要继承javax.servlet和javax.servlet.http两个包,把jsp-api ,servlet-api放到项目中的web-inf/lib目录下即可。⑽ 如何得到javax.servlet.jsp包
javax.servlet.jsp.* 在 jsp-api.jar 中,而jsp-api.jar在tomcat的common/lib中就可以找到。
具体找法:
打开%TOMCAT_HOME%/common/lib 目录下有2个jar包如下:
servlet-api.jar, jsp-api.jar
其中 jsp-api.jar封装了跟jsp有关的api。