网站的申请,淄博市住房和城乡建设厅网站,wordpress 完整主题下载,iis 网站 500java ee jsp仅当页面数量少或需要对生成的内容#xff08;二进制PDF等#xff09;进行精细控制时#xff0c;才可以从Servlet生成HTML。 对于大多数应用程序#xff0c;输出将是HTML#xff0c;我们需要一种更好的方法来完成此操作。 这就是JSP#xff08;Java服务器页面… java ee jsp 仅当页面数量少或需要对生成的内容二进制PDF等进行精细控制时才可以从Servlet生成HTML。 对于大多数应用程序输出将是HTML我们需要一种更好的方法来完成此操作。 这就是JSPJava服务器页面出现的地方。 使用JSP您可以编写并关注文件中HTML内容。 只有在内容之间需要动态或条件逻辑时才插入Java代码称为Scriptlet。 当应用程序服务器处理JSP页面时它将自动生成一个Servlet类将这些JSP文件的内容写出就像您以前用PrintWriter编程编写它一样。 无论JSP中的Scriptlet在哪里它都会内联在生成的Servlet类中。 生成的jsp servlet类全部由应用程序中的应用程序服务器自动管理编译和部署。 简而言之JSP只不过是Servlet的反向外壳。 这是一个简单的JSP示例可以打印Hello World和服务器时间戳。 !DOCTYPE html
htmlbodypHello World!/ppPage served on % new java.util.Date()%/p/body
/html 只需将其另存为基于src/main/webapp maven的文件夹中名为hello.jsp文本文件 hello.jsp在NetBeans IDE中运行。 对于JSP您不需要像Serlvet中那样配置URL映射并且可以从上下文路径直接访问URL映射。 例如以上内容应通过http// localhost8080 / hello.jsp URL在浏览器中显示。 请注意该示例还显示了如何嵌入Java代码。 您可以在% % scriptlet内放置一个方法或对象它将使用结果对象的toString()方法输出连接到scriptlet标记之外HTML。 您也可以使用%! %定义新方法%! % %! % scriptlet标记或使用% % scriptlet执行任何不会生成输出的代码。 注意您也可以在JSP中的%-- --% scriptlet之间添加注释。 JSP还允许您插入“页面指令”以控制JSP容器如何呈现结果。 例如您可以通过将其插入页面顶部来更改结果内容类型 % page contentTypetext/txt % 另一个经常使用的页面指令是import Java package因此您无需在每个Java语句行上添加前缀。 % page imporetjava.util.* %...pPage served on % new Date()%/p 您可以使用更多指令。 请查看JSP规范文档以获取更多详细信息。 除了插入自己的Java代码之外JSP还预定义了一些无需声明即可直接访问的变量。 这是显示大多数这些内置隐式变量的示例。 !DOCTYPE html
htmlbodyh1JSP Examples/h1pImplicit Variables/ptabletrtdName/tdtdInstance/tdtdExample/td/trtrtdapplicationScope/tdtd${applicationScope}/tdtd${applicationScope[myAppName]}/td/trtrtdsessionSope/tdtd${sessionSope}/tdtd${sessionSope[loginSession]}/td/trtrtdpageScope/tdtd${pageScope}/tdtd${pageScope[javax.servlet.jsp.jspConfig]}/td/trtrtdrequestScope/tdtd${requestScope}/tdtd${requestScope[foo]}/td/trtrtdparam/tdtd${param}/tdtd${param[query]}/td/trtrtdheader/tdtd${header}/tdtd${header[user-agent]}/td/trtrtdcookie/tdtd${cookie}/tdtd${cookie[JSESSIONID]}/td/trtrtdpageContext/tdtd${pageContext}/tdtd${pageContext.request.contextPath}/td/tr/tablepPage served on % new java.util.Date()%/p/body
/html 在上面的示例中我使用JSP表达式语言EL语法而不是 脚本。 EL更紧凑更易于读取但是它只能读取存在于任何请求会话或应用程序范围中的变量。 EL使用DOT表示法访问对象变量中的字段甚至嵌套字段。 假设这些字段具有相应的getter方法。 EL还可以使用“ myMap [key]”格式访问地图或使用“ myList [index]”语法访问列表。 这些隐式变量中的大多数都可以作为Map对象访问并且它们主要从请求上的ServletHttpRequest对象公开就像您从自己的Servlet类中公开的ServletHttpRequest 。 JSP可以被视为Web应用程序中的模板语言。 它有助于生成应用程序的“ VIEW”部分。 它使您或团队中的创作者可以专注于HTML以及内容的外观。 它可以帮助更轻松地构建更大的Web应用程序。 不过在JSP文件中使用过多和复杂的逻辑Java代码时要小心因为它将使调试和读取变得更加困难。 尤其是当您有抛出异常的Java语句时。 stacktrace中的行号将更难跟踪并与您的Scriptlet代码匹配。 还要想象一下如果您开始在JSP文件中包含JavaScript代码那么它可能会变得非常混乱。 最好将它们保存在单独的文件中。 如果必须将Java代码嵌入JSP请尝试将其包装在一行Java调用调用中。 更好的方法是尝试使用Servlet代码处理请求并通过将它们插入请求作用域空间中然后将其转发到JSP文件进行渲染来生成需要在JSP中显示的所有数据。 使用这种模式您实际上可以限制JSP中scriptlet的使用并且仅使用EL和JSP标记。 您可以在GitHub的jsp-example中找到上述代码。 翻译自: https://www.javacodegeeks.com/2015/01/ee-jsp-the-reversed-jacket-of-servlet.htmljava ee jsp