初学者 JSP 示例教程

欢迎来到初学者的JSP示例教程。在过去的几篇文章中,我写了很多关于Java Servlet的文章,并从我们的读者那里得到很好的回应,所以我开始了JSP教程的另一个系列,这是该系列的第一篇文章。

JSP 例子教程

jsp example, jsp tutorial, jsp example programs, jsp programming, jsp tutorial for beginners In this JSP example tutorial, we will look into the basics of JSP, advantages of JSP over Servlets, Life Cycle of JSP, JSP API interfaces and Classes and where can we put JSP files in the web application. We will also look into the JSP Comments, Scriptlets, Directives, Expression, Declaration and JSP attributes in brief detail. Some of these topics are very important and we will look into them in more detail in future posts.

JSP 教程

  1. 什么是JSP,为什么我们需要JSP? 2.(#jsp-vs-servlet) 3.(JSP页面的生命周期)(#jsp-lifecycle) 4.(JSP的生命周期方法)(#jsp-lifecycle-methods) 5.(Eclipse和Tomcat的简单JSP示例)(#jsp-example) 6.(Web Application WAR中的JSP文件位置)文件(#jspwar-file)
  • [JspPage 接口](#JspPage 接口)
  • [HttpJspPage 接口](#HttpJspPage 接口)
  • [JspWriter 抽象类](#JspWriter 抽象类)
  • [JspContext 抽象类](#JspContext 抽象类)
  • [PageContext 抽象类](#PageContext 抽象类)
  • [JspFactory 抽象类](#JspFactory 抽象类)(#JspFactory 抽象类)
  • [JspEngine
  1. [JSP评论] (#jsp-comments)
  2. [JSP脚本] (#jsp-scriplets)(- )11. [JSP表达式] (#jsp-表达式)(- )12. [JSP指令] (#jsp-指向 (- )13. [JSP声明] (#jsp-声明) (-). )14. [JSP将Servlet source代码和类文件位置在Tomcat (#jsp-servlet-source) (- )15. [JSP init参数] (#jsp-init-params (- ))16. [管辖JSP init ()方法] (#jsp-override-init (- )17. [JSP中的属性] (#jsp-atizes (- )18. ### 何为JSP? 为什么我们需要JSP? (单位:千美元) ) JSP (JavaServer Pages)是服务器侧式技术,用于创建动态[java web应用程序](/community/tutoris/java-web-application-tutorial- for-binners) "贾瓦网络应用教程为初学者". JSP可以被认为是对servlet技术的扩展,因为它提供了方便创建用户视图的功能. 联合战略计划 页面由HTML代码组成,并提供选项,用于包含动态内容的java代码. 由于Web应用程序包含大量用户屏幕,JSP在Web应用程序中被大量使用. 为了弥合JSP中java代码和HTML之间的空隙,它提供了JSP标记,表达语言,自定义标记等附加功能. 这使得网络开发者易于理解并帮助其快速开发JSP页面. 19 (英语). JSP优于Servlets? () ) - 我们可以从 serverlets 生成 HTML 响应,但这一过程繁琐而容易出错,在写一个复杂的 HTML 响应时,在 serverlet 中写作将是一个噩梦. JSP帮助了这种情况,为我们提供了写出正常的HTML页面的灵活性,并且只在需要的地方才包括我们的java代码. (单位:千美元) )- JSP提供了标签库,表达式语言,自定义标签等额外功能,有助于用户视图的更快发展.
  • JSP页面容易被部署,我们只需要替换服务器中被修改的页面,容器负责部署. 对于服务机,我们需要重新编译并重新部署整个工程. 事实上Servlet和JSP互相称赞. 我们应使用Servlet作为服务器侧控制器,并与模型类进行通信,而JSP应用于演示层. 20 (英语). ### JSP Page 的生命周期也由容器管理. 通常每个包含服务器容器的网络容器也包含用于管理JSP页面的JSP容器. JSP页面的生命周期阶段是: -- ** 翻译** -- JSP页面看起来不像普通的java类,实际上JSP容器解析了JSP页面并翻译出相应的 servlet源代码. 如果 JSP 文件名是 home.jsp,通常它的名字是 home_jsp.java.
  • ** 汇编 ** - 如果翻译成功,那么容器会编译生成的 servlet源文件生成类文件.
  • ** Class Loading ** - JSP被编译为 servlet 类后,其生命周期与 servlet 类似并被装入内存.
  • Instance Creature - JSP类被装入内存后,其对象被容器即时活化. -初始化-JSP类随后被初始化并由普通类转变为 servlet. 初始化后,ServletConfig和ServletContext对象可以进入JSP类.
  • ** 请求处理** - 对于每个客户端请求,都会用Servlet Request和ServletResponse生成一新线程来处理并生成HTML响应. () ) - ** Destroy ** - JSP生命周期最后阶段被卸入内存. () )21 (英语). ### JSP的生命周期方法() ) JSP生命周期方法为:1. **jspInit ()**在JspPage接口中声明. 这种方法在JSP生命周期中仅被叫了一次来初始化配置参数. () (英语). 2. 在 HttpJspPage 接口和处理客户端请求的响应中宣布的 QQjspService(HttpServilet request, HttpServiletResponse response)** ) 3. **jspDestroy ()**在JspPage接口中声明要从内存中卸下JSP. (_) )22 (英语). Eclipse 和 Tomcat 的简单 JSP 示例 我们可以使用 Eclipse IDE 与 JSP 构建动态网络项目,并使用 Tomcat 运行. 请读取[Java Web Applications](/community/tutoris/java-web-application- for-binners# first-web-app-servlet)的教程,以学习我们如何轻松地在Eclipse创建JSP并用tomcat运行. 一个简单的 JSP 例子页面实例是 : 'home.jsp````
    • 页面语言="java"内容 Type="text/html; charset=US-ASCII" page Encoding="US-ASCII" (_) ) <! DOCTYPE html 公示"-//W3C//DTD HTML 4.01 过渡/EN" "https://www.w3.org/TR/html4/loose.dtd"
First JSP> > > > 页面导入="java.util.Date" > (- )

Hi Pankaj


(- ) 当前> 时间为 : QQ新日期 (- ) (- )(- ) > 如果有一个简单的JSP,只使用JRE类,我们不需要将其放入WAR文件. 只需在tomcat Webapp文件夹中创建目录,并将您的 JSP 文件放入新创建的目录. 例如,如果您的 JSP 位于 apache-`tomcat/webapps/test/home.jsp',那么您可以在浏览器中访问 URL`https://localhost:8080/test/home.jsp'. 如果您的主机和端口不同, 您需要相应更改 URL 。 (_) )23 (英语). QQ JSP 文件在Web应用程序 WAR 文件中的位置 我们可以将 JSP 文件放置在WAR 文件的任意位置, 但是如果我们把它放入WEB-INF目录, 我们就无法直接从客户端访问它. 我们可以像服务器一样在web.xml中配置JSP,例如,如果我在WEB-INF目录中有一个像下面的JSP实例页:'test.jsp```` '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' )Test JSPTest JSP WEB-INF文件夹内的页面.
(_) ) Init Param "test" 值为 QQconfig.getInitParemeter ("test") QQbr > 此天体的hashCode__this.hashCode () QQ<而我在web.xml配置中将其配置为:QQ (英语). 第一JSP (- ) < servlet > (- ) < servlet-name > Test (- ) /WEB-INF/test.jsp (- ) (- ) test (- ) /param-value > (- ) (-param >) )

< servlet-mapping > < servlet-name > Test /Test.do () ) </ servlet-mapping > (- ) (- ) > servlet-name > Test1 </ servlet-name > (- ) /WEB-INF/test.jsp (- ) > (- ) > servlet-mapping > (- ) < servlet-name > (-servlet-name > (- ) /test1.do-url-pattern >/url-pattern > (-____KBRBRBR1) ) \后我可以用https://localhost:8080/FirstJSP/Test.do和https://localhost:8080/FirstJSP/Test1.do访问. 注意此情况下容器将创建两个实例, 且两者都有自己的服务器配置对象, 您可以通过访问浏览器中的这些 URL 来确认 。 对于Test.do URI,你会得到如下响应.QQ () (英语). 测试 JSP WEB-INF文件夹内的页面。 () ) Init Param"测试"值=测试值 此天体的hashCode=1839060256 QQFor Test1. do. URI, 您将像下面一样得到响应 。\ () (英语). 测试 JSP WEB-INF文件夹内的页面。 () ) Init Param "test" 值=null 此对象的hashCode=38139054 通知在第二例中的 init param 值是无效的,因为它没有定义在第二个 servlet中,也注意到散列码是不同的. 如果您要提出进一步的请求, 散列码值不会改变, 因为请求是通过在容器旁产出新线程处理的 。 你是否注意到以上 JSP 示例中使用了 config ** 变量,但没有变量被声明,这是因为其是 JSP 页面中可用的9个隐含对象之一,在 [ JSP 隐含对象**] (/community/tutoris/jsp-implient-objects "JSP 隐含对象有实例")中读取更多关于它们的内容. 24 (英语). QQ JSP API 接口和类 ( _) 所有核心 JSP 接口和类都是在"javax. servlet.jsp"包中定义的. 表达语言 API 接口是"javax. servlet.jsp.el"包的一部分. 联合战略计划 Tag 库接口和类在 javax. servlet.jsp.tagext 包中定义。 这里我们将研究核心JSP API的接口和类. ( (英语)

    • JspPage 接口 JspPage 接口扩展了 Servlet 接口并声明 jspInit ()和 jspDestroy () JSP 页面的生命周期方法.
  • HttpJspPage 接口 HttpJspPage 接口描述一个 JSP Page 执行类在使用 HTTP 协议时必须满足的相互作用. 此接口宣布 HTTP 协议的 JSP 页面服务方法为 public void_jspService(HttpServilet Request, HttpServiletResponse response) 抛出 ServiletException, IOException. () ( )* QQ JspWriter 抽象类 类似于服务器中的 PrintWriter, 并有额外的缓冲支持设施. 这是JSP页面中带有"出"名称的隐含变量之一. 这个类扩展了java.io.Writer和容器为这个抽象类提供了自己的执行,并在将JSP页面翻译为Servlet时使用. 我们可以使用PageContext.getOut()方法获取对象. 用于JspWriter的Apache Tomcat混凝土类为"org.apache.jasper.runtime.JspWriterImpl" *. QQ JspContext抽象类 JspContext作为PageContext类的基础类,并摘要所有不特指服务器的信息. JspContext 提供了获取用于输出的JspWriter的机制,与属性合作的机制,以及管理各种范围命名空间的API. ( ( )* QQPageContext抽象类 PageContext扩展了JspContext,在JSP用于网络应用时提供有用的上下文信息. 一个PageContext实例提供了与JSP页面相关的所有命名空间的访问权限,提供了多个页面属性的访问权限,以及执行细节上方的一层. 隐含对象自动添加到页面Context. (_) ( )* JspFactory 抽象类 JspFactory是一个抽象类,它定义了运行时JSP页面可用的一些工厂方法,用于创建用于支持JSP执行的各种接口和类的实例.
  • JspEngineInfo 抽象类 JspEngineInfo是一个抽象类,提供当前JSP引擎的信息.
  • QQ 错误数据最终类 包含关于错误的信息, 用于错误的页 。
  • Jsp 例外类

与ServletExcepion类似,JSP容器已知的通用例外. 如果 JSP 页面抛出 JspExcusion,则错误页面机制用于向用户显示错误信息.

  • JspTag 例外类 标记处理器用来表示一些无法恢复的错误的例外 。
  • QQ SkipPageException Class 例外表示调用页面必须停止评价. 被一个简单的标签处理器所抛出,以表示不能对页面剩余部分进行评价. 此例外不应手工扔入 JSP 页面 。 ( _) (英语)

17岁 QQ JSP 评论 由于JSP是建立在HTML之上的,我们可以像html评论一样将评论写入JSP文件中作为--. 这是 HTML 注释 -- -- * * * 这些评论被发送给客户端,我们可以用浏览器的视图源选项来查看. 我们可以把评论放到JSP文件中,如:----. 这是 JSP 评论 - QQ 此评论适合开发者提供代码级别注释,因为这些注释不是在客户端响应中发送的. () )18 (英语). QQ JSP 脚本 脚本标记是将java代码放入JSP一页的最简单方式. 脚本标签以QQ开头,以QQ结尾. 脚本标记中写入的任何代码都进入了 QQjspService () 方法 。 例如:____() ) QQ 日期d=新日期(; system.out.println ("当前日期="+d); QQ

  1. QQ JSP 表达式( _) 由于我们大多数时候使用_out.print ()_方法在JSP页面中打印动态数据,因此有一个快捷方式通过JSP表达式实现. 联合战略计划 表达式以 QQ 开头并用 QQ 结尾. QQ出局. print ("Pankaj") ; 使用 JSP 表达式可以写作 QQ "Pankaj" 。 注意QQ之间的任何信息都会作为参数发送给出.print()方法. 还请注意,脚本可以包含多个java语句,并且总是以分号结尾(;;),但表达方式不会以分号结尾. 20 (英语). ### JSP 指令 JSP 在JSP页面被翻译为servlet源代码时,指令被用来给容器提供特殊指示. JSP指令以QQ开头,以QQ结尾. 例如,在以上 JSP 示例中,我使用_page_指令指示容器 JSP 翻译导入 Date 类 。 21 (英语). ### JSP 宣言 JSP 声明用于声明servlet类的成员方法和变量. 联合战略计划 宣言以"!"开头,以"."结尾. 例如,我们可以在JSP中以 QQ 的形式在类中创建一英寸变量! 公用静态入数=0;QQ
  2. QQ JSP 改变了 Servlet 源代码和类文件位置 Tomcat( ) (英语). JSP文件被翻译为Servlet源代码后,源代码(.java)和编译类均被放入Tomcat/work/Catalina/localhost/FirstJSP/org/apache/jsp目录. 如果JSP文件存在于其他应用目录内,则会维护目录结构. 对于WEB-INF目录内的JSP,其出处和类文件都在Tomcat/work/Catalina/localhost/FirstJSP/org/apache/jsp/WEB_002dINF目录内. 以下是上面测试生成的源代码 。 jsp页. 测试_jsp.java(_) ) / * *由Apache Tomcat 的Jasper组件生成 * 版本:Apache Tomcat/ 7.03
  • 生成于:2013-08-21 03:40:59 UTC
  • 注: 此文件的上次修改时间被设定为
  • 源文件在
  • 生成后的最后修改时间,以协助修改跟踪. () ) Content. Con.BBR1) Content. / ( ) Content. / Content. / Content. / Content. / Content. / Content. / Content. / Content. / Content. / Content. Content. / Content. / Content. / Content. / opt. / Content. / opt. / Content. / opt. / opt. / Content. / Content. / Content. / Contentent. / Contentent. / Contentent. / Content. / Content. / Content. / Content. / Cont. / Cont. / Cont. / Cont. / Cont. / Cont. / Cont. / / Cont. ServletException {(- ) (- ) final javax. servlet.jsp.PageContext page Context; (- ) javax. servlet.http.HttpSession session = 无效; (- ) final javax.s. servlet. servig. (- ) Servallet Contfig; (- ) javax. servlet.jsp.Jspwriter exter ext out = 无效; (- ) final java.lang. 对象页=此; javax. servlet.jsp.Jspwriter = 无效; (- out-) javax.servlet.jsp.servt.jsp.pageContex_page_page_contex=无; (- )(- ) 尝试 { (-) 响应.set ContentType("text/html"); charset=US-ASCII"; (-MBR1_) page Contextexture =-j.BRMGetx. (BRGet_Pontext) 页面=BRR.(FGt)PRigt; (-FRT1 (-K) Portx. DOCTYPE html Public"-//W3C//DTD HTML 4.01 过渡性//EN""https://www.w3.org/TR/html4/loose.dtd">\n"); 出.write ("\n"); 出.write ("\n"); 出.write (" <meta http-equiv="Content-Type"内容"text/html; Charset=US-ASCII\">\n"); 出.write ("Title>JSP\n"); ("/head>\n"); ( BR1_"出.write ("body>\n"); ( _")出. WEB-INF文件夹内的页面.
    \n>; 出.write("Init Param"test"值="); 出.print(config.getInitParemeter ("test")); 出. 写出("
    \n"); 出.write ("此对象的HashCode="); ( ")出.print (This.hashCode ()); 出.write ("\n"); 出.write ("</html")出.write (") ("#") ( ")) 接取 (java.lang.throwt) { 如果((texampof javax.s. serv.j.Skip.PageExcepion){ 出("出_jspx; 如果(出)出(#=无效.Get.Buffersize(!) != 0 尝试 {出. clearBusffer (); } 抓取 (java.io.IOException e)} 如 (_jspx_page_context!; = 无效) _jspx_page_context. handlePageException(t); ; 其它抛出新的ServerletExcession(t); } } 最终 { 将分类包从其他文件夹中开始,它也包括目录等级。 通常我们不关心它.
  • 生成servlet类是最终的,不能被扩展.
  • 它扩展了"org.apache.jasper.runtime.HttpJspBase",它与"HttpServlet"相似,只是它是汤姆卡特JSP翻译器的内部执行. HttpJspBase 扩展 HttpServlet 和执行 HttpJspPage 接口 (_)
  • 在_jspService () 方法执行起始时通知本地变量, 它们由 JSP 翻译器自动添加, 并可用于服务方法,即脚本. 作为java程序员,有时有助于为调试目的查看生成的源. () )23. QQ JSP init 参数 ( (英语). 我们可以用config隐含对象来定义JSP页面的输入参数,如上例所示,我们可以在JSP中取出它们,我们将在未来的帖子中更详细地研究JSP中的隐含对象. () )24 (英语). ++ 超越 JSP init () 方法( _) ) 我们可以推翻 JSP init 方法来创建资源, 用于 JSP 服务() 方法使用 JSP 声明标记, 我们可以推翻 jspInit () 和 jspDestroy () 或任何其他方法 。 然而,我们不应该超越_jspService()方法,因为我们在 JSP 中写的任何东西都进入了服务方法. 25 。 QQ 在 JSP 中的属性( _) ) 除了带有请求,会话和上下文范围的标准 servlet属性外,在JSP中,我们还有另一个属性范围,即从pageContext对象中可以得到的Page Spel. 我们会看它的重要性 在自定义标签辅导。 对于普通JSP编程,我们不需要担心页面范围. ( (英语)

我希望它能帮助你理解JSP的基本概念,并帮助你开始。

Published At
Categories with 技术
Tagged with
comments powered by Disqus