2010-08-01 57 views
2

我对某些术语很困惑,我知道用于编写一些“通常的可执行”程序的Java。但是我发现你可以用java做servlet,然后听说JSP。Servlets,JSP,Java?

我不确定servlet和JSP的区别..我没有想到,我认为它就像PHP或类似的东西。

您是否有过任何有组织的参考资料(或者介意解释“通常”Java向这些技术的转变)?

谢谢。

+0

Dupe/related:[JSF,Servlet和JSP之间有什么区别?](http://stackoverflow.com/questions/2095397/what-is-the-difference-between-jsf-servlet-and-jsp )和[什么是主流Java替代ASP.NET/PHP](http://stackoverflow.com/questions/2556553/what-is-the-main-stream-java-alternative-to-asp-net -php)。 – BalusC 2010-08-01 23:37:28

回答

1

Servlet是HTTP,在如Tomcat,码头一个servlet/JSP应用引擎运行的听众等

JSP是被编译成servlet模板。它们允许您使用类似标签的模板表示法编写HTML生成的servlet,以使动态行为成为可能。

0

简而言之,JSP是一种通过在模板中嵌入Java来构建servlet的方法。

+0

这在技术上是正确的,但“最佳实践”是不要将Java嵌入到JSP中。事实上,如果你的web应用程序是用MVC体系结构设计的,那么你应该*使用JSP来进行视图渲染。 – 2010-08-01 22:19:18

2

Servlets是Java,umm,在Web应用程序的特殊环境中运行的程序。正如您所期望的那样,他们接收并处理Web请求。几乎直接的Java代码加上一些约定。 Servlet具有挖掘请求参数的方法,并且可以将打印机输出流连接到最终返回给用户浏览器的输出流。

JSP是Java Server Pages。这是HTML页面和一种预处理器。在通常的HTML标签中,预处理器评估一种模板/标签语言。从本质上讲,你可以编写一个HTML页面,但包含Java代码。 “预处理器”将您的JSP转换为一个servlet; HTML标签及其内容成为servlet代码中的字符串。由于您提到了PHP,所以JSP看起来大致与HTML中嵌入的(某些)PHP代码差不多。

JSP是一种非常简单的创建具有活动Java内容的网页的方法,与Microsoft的ASP大致相当。然而,大多数Java社区都认为JSP混合HTML标记和代码的方式是一种可憎的做法,会导致非常不洁的应用程序,并且不允许Web设计人员和程序员之间的专业化。这与“真正的”程序员喜欢打击PHP一样的优雅。

因此,JSP大多已经从优雅中脱颖而出,并且已经被混合Web内容和代码的其他解决方案所取代。工业界最引人注目/成功的是“工业标准”StrutsJava Server Faces。然而,很多人认为这些也是非常复杂的,所以有很多不同的Web application frameworks for Java

我提到的任何关键字都会引导您到其他信息链接。尽管完整的信息可以在Oracle's documentation on J2EE中找到,但我不能推荐阅读它作为介绍。这是可怕的沉重,详细和深远。请看一些现代第三方,最好是开源框架,我认为这些框架不那么痛苦。我个人很喜欢Wicket,但它是众多人中的一员,我知道发布有效建议的替代方案太少了。

0

回到过去,有一些小应用程序是运行在客户端浏览器中的应用程序,反过来是servlet,它是在基于java的web服务器(容器)中运行的应用程序。

该小服务程序有权访问信息以将信息传递回浏览器,并从资源(如cookie和标头)获取信息。但是,许多人都熟悉ASP和PHP,并且编写servlet可能会更困难,所以为了使框架能够抽象出来并使Web开发更容易,我们有JSP(Java Server Pages)。这些将编译为servlet,这只是一个更简单的方法来创建网页。

这是一个简单的解释,所以我跳过了一些部分,例如谈论如何使用模板,但通过查看JSP生命周期这里可以得到一个更好的主意:http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/JSPIntro4.html

JSP页面有时会受到某些限制,例如JSP页面无法返回二进制数据,所以如果您想要发回图像或PDF,那么servlet是您唯一的选择。

0

“servlet API”是一组Java接口(“合同”),它允许您编写处理来自浏览器的单个Web请求的代码片段,并生成对此的响应。这通常是一个网页,但也可能是生成的图像或声音文件。

基本上,作为一名servlet程序员,您不必关心“我应该如何生成这个请求的响应”。周围的环境处理所有其他事情,例如监听请求的端口,记录请求信息,保存活动会话,以便用户不会注意到服务器已重启等。

在这样的servlet中,响应是在代码中生成的,并且

out.println("<li>" + name + ": " + address +"</li>"); 

很快变得乏味。因此,JSP被发明出来,允许你说

<li><%= name %>: <%= address%></li> 

而不是在页面大多是HTML但有一点代码在里面。

经验表明,HTML框架和Java数据表示应该是分开的,因为HTML和Java在同一个文件中的混合使其很难维护。

1

与PHP一样,Servlet和JSP用于创建动态HTML页面,但使用Java语言。在Java世界中,首先我们有了Servlets。 Servlet是一个实现某些接口的Java类。然后,例如,让我们假设你想你的servlet输出HTML页面是这样的:

<html> 
<head></head> 
<body>current time</body> 
</html> 

如果当前的时间将被动态生成并显示当前时间。为了做到这一点,你必须写多个out.println声明:

out.println("<html>"); 
out.println("<head></head>"); 
out.println("<body>" + new Date() + "</body>"); 
out.println("</html>"); 

正如你可以看到,相对于PHP,这是非常详细的,而不是维护。这就是JSP诞生的原因。您可以使用下面的代码实现JSP同样的事情:

<html> 
<head></head> 
<body><%= new Date() %></body> 
</html> 

这是很多更简洁,更可读,而且更熟悉的HTML作者。

现在为了服务器JSP和Servlet,就像在Apache + Mod PHP中运行PHP一样,您需要一种称为Servlet容器的特殊服务器。一个流行的开源Servlet容器是Tomcat:tomcat.apache。org

如果您有任何其他问题,请告诉我。

+0

谢谢。有用的解释:) – makakko 2010-08-02 04:35:25