首页技术servlet被什么替代了 jsp被什么取代了学什么

servlet被什么替代了 jsp被什么取代了学什么

编程之家2026-06-29623次浏览

很多朋友对于servlet被什么替代了和jsp被什么取代了学什么不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

servlet被什么替代了 jsp被什么取代了学什么

servlet是什么

在 JavaWeb项目中,处理请求和发送响应的过程是由一种叫做 Servlet的程序来完成的,并且 Servlet是为了解决实现动态页面而衍生的东西。

简单来讲:Servlet其实就是一个遵循Servlet开发的java类,Serlvet是由服务器调用的,运行在服务器端。

一张图描述 Servler在 B/S中的作用点:

2. Tomcat和 Servlet的关系

Tomcat是Web应用服务器,是一个Servlet/JSP容器。 Tomcat作为 Servlet容器,负责处理客户请求,把请求传送给 Servlet,并将 Servlet的响应传送回给客户,而 Servlet是一种运行在支持 Java语言的服务器上的组件。

Servlet最常见的用途是扩展 Java Web服务器功能,提供非常安全的、可移植的、易于使用的 CGI替代品。

servlet被什么替代了 jsp被什么取代了学什么

从 Http协议中的请求和响应可以得知,浏览器发出的请求是一个请求文本,而浏览器接收到的也应该是一个响应文本。但是在上面这个图中,并不知道是如何转变的,只知道浏览器发送过来的请求也就是 request,我们响应回去的就用 response。忽略了其中的细节,现在就来探究一下。

①:Tomcat将 Http请求文本接收并解析,然后封装成 HttpServletRequest类型的 request对象,所有的 Http头数据读可以通过request对象调用对应的方法查询到。

②:Tomcat同时会要响应的信息封装为 HttpServletResponse类型的response对象,通过设置 response属性就可以控制要输出到浏览器的内容,然后将 response交给 Tomcat,Tomcat就会将其变成响应文本的格式发送给浏览器。

Java Servlet API是Servlet容器(tomcat)和servlet之间的接口,它定义了Serlvet的各种方法,还定义了 Servlet容器传送给 Servlet的对象类,其中最重要的就是 ServletRequest和 ServletResponse。所以说我们在编写Servlet时,需要实现 Servlet接口,按照其规范进行操作。

3. Servlet接口主要方法

Servlet接口主要的 3个方法:

servlet被什么替代了 jsp被什么取代了学什么

init()方法:只会调用一次,只是在创建servlet实例的时候才会创建。

service()方法:是进行数据处理的,只要接受了一次请求,就会被调用一次

destroy()方法:销毁 Servlet对象的时候调用。停止服务器或者重新部署 Web应用时销毁 Servlet对象,同样也是调用一次

4.编写 Servlet

首先说明一点疑惑,有时候我们在一些资料上看到别人这样写:

publicclassTestServletimplementsServlet{

init()...

service()...

getServletConfig()...

...

}

而在这我们要继承 HttpServlet类那么问题来了,继承HttpServlet和实现Servlet有什么区别?

首先,直观的不同,Servlet是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法。

而 HttpServlet实现了 Servlet接口,并把 Servlet接口中的方法实现了。

继承 Httpservelt,实际上也就实现了 Servlet接口。

但是我们没必要再去实现 Servlet中定义的生命周期方法,因为在 Httpservlet中已经有了默认实现,并且这些默认实现也挺规范和实用, doget和 dopost是执行用户请求的终点,get请求会调用 doget方法,post请求会执行 dopost方法,我们可以在这2个方法中定义我们自己的业务逻辑。

最后,HttpServlet在实现 Servlet接口的时候,已经实现了 Servlet中所有的方法,因此继承自 HttpSrvlet的类,不需要再去覆写相应的生命周期等方法。

4.1编写Java类,继承HttpServlet

创建一个 MyServlet java类,继承 HttpServlet实现 service方法:

publicclassMyServletextendsHttpServlet{

@Override

protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//设置字符编码

request.setCharacterEncoding("utf8");

//从request对象中获取username,password

Stringusername=request.getParameter("username");

Stringpassword=request.getParameter("password");

request.setAttribute("username",username);

request.setAttribute("password",password);

request.getRequestDispatcher("/index2.jsp").forward(request,response);;

}

}

4.2配置web.xml文件

web.xml配置 Servlet访问路径,能让别人通过链接访问到你的 Servlet:

<web-app>

<display-name>ArchetypeCreatedWebApplication</display-name>

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>club.sscai.demo.MyServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name>

<url-pattern>/MyServlet</url-pattern>

</servlet-mapping>

</web-app>

4.3 jsp界面显示

index2.jsp:

<html>

<body>

<h2>2222222</h2>

username:<%=request.getParameter("username")%>

<br>

password:<%=request.getParameter("password")%>

</body>

</html>

Web Service和Servlet的区别

最近项目中有提供或者调用别的接口,在纠结中到底是用servlet还是用webservice,所以上网查看了下他们以及RMI之间的区别,方便加深了解。

首先比较下servlet和webservice下

请求:

servlet:提供了请求/响应模式,是JAVA的一种规范,只能使用于java上,用来替代早期使用的难懂的CGI,是一种无状态的请求响应,客户端访问一个服务器的url,只需要发送简单的httprequest即可。规定了四个范围:pageContext、request、session、application。一定依赖于各种SERVLET容器,但servlet只能接受一个简单的http请求;

WebService最早是微软提出了一种以XML为载体网络信息传输的规范,现在几乎所有的语言与平台都支持,带有状态机制,不依赖于SERVLET容器,可以发送一个xml作为其请求内容,WebService通常是基于http的远程方法调用(RMI),号称是可以反回远程对象,一般来说客户段可以象调用本地方法一样调用WebService的方法。

传输:

servlet使用http协议传输数据,如果你用Servlet返回XML,那个XML的描述框架就是你定的,必须告知使用者具体的说明,没有统一标准。

webservice使用固定的XML格式封装成soap消息,可以使用http作为底层数据传输,但并不局限于http协议,方法返回消息是有标准的。

返回结果:

servlet返回的是html页面;

webservice返回的可以是复杂对象甚至使用附件或者mutidata的二进制文件。

部署:

servlet需要遵守j2ee的Web Application规范部署的应用服务器上,如tomcat,weblogic,websphere;

WebService则需要有WSDL文件来部署服务,或者使用UDDI注册。

优势:

WebService的跨平台特性是servlet不能比的,可以被各种语言调用;

servlet相对来说速度上的优势也是不可忽视的。

接下来在看看RMI和webservice中的

rmi的客户端和服务端都必须是java,webservice没有这个限制

webservice是在http协议上传递xml文本文件,与语言和平台无关

rmi是在tcp协议上传递可序列化的java对象,只能用在java虚拟机上,绑定语言

RMI是EJB远程调用的基础,仅用RMI技术就可以实现远程调用,使用EJB是为了实现组件,事物,资源池,集群等功能。

WebService是通过XML来传输数据,可用http等协议因此可在异构系统间传递,并且可以穿过防火墙,可在公网上远程调用

Jsp和servlet有那些相同点和不同点,他们之间的联系是什么

简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。

后来SUN推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP,JSP都是镶嵌型的SCRIPT语言。

从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer, presentation layer。当然也可以更复杂。SERVLET用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer。写惯了ASP,PHP,CGI的朋友,经常会不自觉的把presentation layer和business layer混在一起。就象前面那个朋友,把数据库处理信息放到JSP中,其实,它应该放在business layer中。

根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的东东,也就是说,只放输出HTML网页的部份。而所有的数据计算,数据分析,数据库联结处理,统统是属于business layer,应该放在JAVA BEANS中。通过JSP调用JAVA BEANS,实现两层的整合。

实际上,微软前不久推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通过调用,实现整合。

为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。

另外一方面,纯SCRIPT语言将presentation layer和business layer混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了。

综上所述,SERVLET是一个早期的不完善的产品,写business layer很好,写presentation layer就很臭,并且两层混杂。

所以,推出JSP+BAEN,用JSP写presentation layer,用BAEN写business layer。SUN自己的意思也是将来用JSP替代SERVLET。

可是,这不是说,学了SERVLET没用,实际上,你还是应该从SERVLET入门,再上JSP,再上JSP+BEAN。

强调的是:学了JSP,不会用JAVA BEAN并进行整合,等于没学。大家多花点力气在JSP+BEAN上。

在补充几句:

我们可以看到,当ASP+COM和JSP+BEAN都采用组件技术后,所有的组件都是先进行编译,并驻留内存,然后快速执行。所以,大家经常吹的SERVLET/JSP先编译驻内存后执行的速度优势就没有了。

反之,ASP+COM+IIS+NT紧密整合,应该会有较大的速度优势呈现。而且,ASP+COM+IIS+NT开发效率非常高,虽然BUG很多。

那么,为什么还用JSP+BEAN?因为JAVA实在前途远大。微软分拆后,操作系统将群雄并起,应用软件的开发商必定要找一个通用开发语言进行开发,JAVA一统天下的时机就到了。如果微软分拆顺利,从中分出的应用软件公司将成为JAVA的新领导者。目前的JAVA大头SUN和IBM都死气沉沉,令人失望。希望新公司能注入新活力。不过,新公司很有可能和旧SUN展开JAVA标准大战,双方各自制定标准,影响JAVA夸平台。

另外,现在的机器速度越来越快,JAVA的速度劣势很快就可以被克服。

关于servlet被什么替代了的内容到此结束,希望对大家有所帮助。

学了python可以干嘛 学python能干啥菜鸟教程官网首页 菜鸟教程官网入口