当第一次请求JSP或Web应用程序启动时,servlet容器会将其编译为扩展HttpServlet的类,并在Web应用程序's lifetime. You can find the generated source code in the server's工作目录中使用它 . 例如Tomcat,它是 /work 目录 . 在JSP请求中,servlet容器将执行已编译的JSP类,并通过网络将生成的输出(通常只是HTML / CSS / JS)通过网络发送到客户端,然后客户端将其显示在Web浏览器中 .
Servlets
Servlet是在服务器机器上运行的 Java application programming interface (API) ,它拦截客户端发出的请求并生成/发送响应 . 一个众所周知的例子是 HttpServlet ,它提供了使用流行的HTTP methods(例如 GET 和 POST )挂钩HTTP请求的方法 . 您可以将 HttpServlet 配置为侦听某个HTTP URL模式,该模式可在 web.xml 中配置,或者最近使用Java EE 6配置 @WebServlet 注释 .
15 回答
JSP是MVC(模型视图控制器)的View组件 . Controller接收传入的请求并将其传递给Model,该Model可能是一个执行某些数据库访问的bean . 然后,JSP使用HTML,CSS和JavaScript格式化输出,然后将输出发送回请求者 .
Servlet和JSP之间的基本区别在于,在Servlet中我们编写了java代码,并且我们嵌入了HTML代码,而JSP则只是反向的 . 在JSP中我们编写HTML代码,并且我们使用JSP提供的标记嵌入java代码 .
JSP拥有自己的生命周期jsp_init()jsp_service()jsp_destroy
首先请求JSP转换为.java文件 . 我们正在使用三种类型的标签
1.)无脚本
在这里,开发人员可以声明开发人员想要获取数据的所有内容
2.)表达标签
这里开发人员可以使用一些打印相关数据
3)声明
这里开发人员可以声明一些方法相关数据 .
Servlet拥有自己的生命周期 .
第一个请求容器将从web.xml文件读取数据然后在欢迎填充后将显示 .
在执行动作之后,它将搜索url,在此过程之后,它将自动搜索特定的servlet . 服务操作将执行 .
JSF拥有它自己的ui,它的生命周期可以以六种方式执行,
对于ui这里的表格,我们使用面板网格,这是不同的面孔 .
[来源:Complete reference:JSF]
Jsp也有内置的servlet代码,不需要任何外部编译就可以直接运行 . 更改将直接在浏览器中在jsp中生效 .
需要编译Servlet(即它将具有特定的类创建)
Jsf是MVC框架的视图组件
JSP(JavaServer页)
JSP是在服务器机器上运行的 Java view technology ,它允许您使用客户端语言(如HTML,CSS,JavaScript等)编写模板文本 . JSP支持taglibs,它们由Java代码支持,可以让您动态控制页面流或输出 . 一个着名的taglib是JSTL . JSP还支持Expression Language,它可用于访问后端数据(通过页面中可用的属性,请求,会话和应用程序范围),主要与taglib结合使用 .
当第一次请求JSP或Web应用程序启动时,servlet容器会将其编译为扩展HttpServlet的类,并在Web应用程序's lifetime. You can find the generated source code in the server's工作目录中使用它 . 例如Tomcat,它是
/work
目录 . 在JSP请求中,servlet容器将执行已编译的JSP类,并通过网络将生成的输出(通常只是HTML / CSS / JS)通过网络发送到客户端,然后客户端将其显示在Web浏览器中 .Servlets
Servlet是在服务器机器上运行的 Java application programming interface (API) ,它拦截客户端发出的请求并生成/发送响应 . 一个众所周知的例子是
HttpServlet
,它提供了使用流行的HTTP methods(例如GET
和POST
)挂钩HTTP请求的方法 . 您可以将HttpServlet
配置为侦听某个HTTP URL模式,该模式可在web.xml
中配置,或者最近使用Java EE 6配置@WebServlet
注释 .首次请求Servlet或在Web应用程序启动期间,servlet容器将创建它的实例并在Web应用程序的URL模式中将其保留在内存中 . 您可以通过HttpServletRequest访问请求数据并按HttpServletResponse处理响应 . 这两个对象都可用作
HttpServlet
的任何重写方法内的方法参数,例如doGet()
和doPost()
.JSF(JavaServer Faces)
JSF是 component based MVC framework ,它构建在Servlet API之上,并通过taglibs提供components,可以在JSP或任何其他基于Java的视图技术(如Facelets)中使用 . Facelets比JSP更适合JSF . 它提供了很好的templating capabilities,例如composite components,而JSP基本上只提供jsp:include用于模板化,因此你被迫使用原始Java代码创建自定义组件(这在JSF中有点不透明和很多繁琐的工作)当你想要用单个组件替换重复的组件组 . 从JSF 2.0开始,JSP已被弃用为视图技术,而不支持Facelets .
作为MVC(Model-View-Controller)框架,JSF提供FacesServlet作为唯一的请求 - 响应控制器 . 它需要您手中的所有标准和繁琐的HTTP请求/响应工作,例如收集用户输入,验证/转换它们,将它们放入模型对象,调用操作和呈现响应 . 这样,最终基本上是View的JSP或Facelets(XHTML)页面和作为Model的JavaBean类 . JSF组件用于将视图与模型绑定(例如ASP.NET Web控件),
FacesServlet
使用JSF组件树完成所有工作 .相关问题
What is the main-stream Java alternative to ASP.NET / PHP?
Java EE web development, what skills do I need?
How do servlets work? Instantiation, session variables and multithreading
What is a Javabean and where are they used?
How to avoid Java code in JSP files?
What components are MVC in JSF MVC framework?
What is the need of JSF, when UI can be achieved from CSS, HTML, JavaScript, jQuery?
见http://www.oracle.com/technetwork/java/faq-137059.html
见https://jcp.org/en/introduction/faq
JSP是一种特殊的servlet .
JSF是一组可以与JSP一起使用的标记 .
Servlet - 它是java服务器端层 .
JSP - 它是带有html的Servlet
JSF - 它的组件基于标签库
JSP - 当服务器收到请求时,它被转换为servlet .
JSF是一个高级框架,其中非常容易实现基于模型 - 视图 - 控制器(MVC)的项目架构 . JSF优于JSP的主要优点是可以根据条件轻松动态呈现浏览器上的组件,并轻松集成ajax事件 .
JSF应用程序的前端即xhtml文件是通过浏览器向用户显示的文件 . 这些xhtml文件在内部调用托管bean,例如控制器,其中写入实际应用逻辑 .
控制器在内部调用与数据库通信的各种服务(使用Hibernate或JPA API) . 这就是流程如何发生 .
JSF还与RichFaces结合使用,RichFaces是一个为Web应用程序提供丰富外观的框架 .
JSF RichFaces Hibernate / JPA是一个很好的学习技术!
从浏览器/客户端角度
JSP和JSF看起来都一样,按照应用程序要求,JSP更适合基于请求 - 响应的应用程序 .
JSF针对更丰富的基于事件的Web应用程序 . 我认为事件比请求/响应更精细 .
从Server Perspective
JSP页面转换为servlet,它只有最小的行为 .
JSF页面转换为组件树(通过专门的FacesServlet),它遵循spec定义的组件生命周期 .
JSP代表JAVA SERVER PAGE ........ jsp不是servlet . Jsp本身使用代码和HTML标记,你不需要分别制作HTML和servlet.Jsp在Web应用程序中扮演着重要的角色 . Servlet是一个java类,它使您的HTML页面从静态变为动态 .
Java Server Pages (JSP) 是Java技术,它使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面 . JSP技术将用户界面与内容生成分开,使设计人员能够在不改变底层动态内容的情况下更改整体页面布局 .
Facelets 是第一个为 JSF (Java Server Faces) 设计的非JSP页面声明语言,与JSP相比,它为JSF开发人员提供了一种更简单,更强大的编程模型 . 它解决了JSP中用于Web应用程序开发的不同问题 .
这是一个比较scriplets和facelets功能的表:
Source
JSF是一个Web应用程序,用于简化基于Web的用户界面的开发集成; JSP是一种基于Java的技术,专门用于帮助软件开发人员创建动态网页 .
JSF包含多个核心功能,包括但不限于Managed Beans,基于模板的组件系统和两个基于XML的标记库;必须使用Java字节码编译JSP才能正常运行 .
确实,JSP在执行时被转换为servlet,而JSF是一个全新的东西,以使网页更具可读性,因为JSF允许以标记的形式编写所有编程结构 .
在某些情况下,您可以支持JSP而不是JSF . 应用性质应该是选择技术的决定性因素 .
如果你有一个丰富的GUI交互和大量的Java脚本需要,那么赞成JSF . 基本上,如果您的GUI应用程序架构像面向组件甚至像Swing一样驱动,那么JSF是最好的 .
如果应用程序只是一个简单的表单提交,而不是需要很多GUI交互,那么如果学习新技术是一种开销而且复杂的框架是不必要的,那么JSP可以做得很好 .