服务器渲染 -JSP

简介: 服务器渲染 -JSP

jsp理解


 jsp像写HTML一样,只是单一的HTML是静态的使用不灵活,jsp可以在页面中嵌套Java代码,使用起来更加方便灵活,可以动态获取数据。jsp技术基于Servlet,  是对 Servlet 的包装。同时也在Servlet的基础上进行了扩展,更容易对数据进行排版。


       Tomcat 服务器会把 jsp 页面解析先成为一个 java 源文件。再编译成为.class 字 节 码 程 序


JSP 公式:


jsp=html+java 片段+标签+javascript+css


page 指令(常用的)


1. language: jsp 翻译后是什么语言文件, 只支持 java

2. contentType : jsp 返回的数据类型,对应源码中 response.setContentType()参数值

3. pageEncoding 属性:当前 jsp 页面文件本身的字符集

4. import 属性: 跟 java 源代码中一样。用于导包,导类


JSP 三种常用脚本基本语法


声明脚本格式:<%! 声明 java 代码 %>


声明脚本用于定义 jsp 的需要属性、方法、静态代码块和内部类等。


表达式脚本格式:<%属性=表达式%>


在 jsp 页面上输出数据 , 表达式脚本中的表达式不能以分号结束。


代码脚本格式:<% java 代码%>


可编写需要的功能代码,代码脚本可以和表达式脚本一起组合使用,在 jsp 页面上输出数据。


JSP 九大内置对象


1. out 向客户端输出数据,out.println("");


2. request 客户端的 http 请求


3. response 响应对象


4. session 会话对象


5. application 对应 ServletContext


6. pageContext jsp 页面的上下文,是一个域对象,可以 setAttribue(),作用范围只是本页面


7. exception 异常对象 , getMessage()


8. page 代表 jsp 这个实例本身


9. config 对应 ServletConfig


JSP 域对象


1. pageContext 域对象:存放的数据只能在当前页面使用,其他页面无法取出数据,范围最小。例:请求转发


2. request 域对象:存放的数据在一次 request 请求有效,第二次request无效。例:重定向


3. session域对象:存放的数据在一次会话有效,会话关闭无效。例:浏览器关闭


4. application域对象:存放的数据在整个 web 应用运行期间有效, 范围最大。例:Tomcat重启


域对象作用域范围:pageContext < request < session < appliction


注意事项和细节


 jsp 页面嵌套了Java代码,不能直接用浏览器运行。要通过浏览器访问 Tomcat 来访问 jsp 页面。jsp 页面本质是一个 Servlet 程序,和Java相关联。


EL 表达式


EL 表达式语法:${key}


EL 表达式在输出 null 时,输出的是 " "空字符串


jsp 表达式脚本输出 null 的时,输出的是 "null" 字符串


EL 表达式常用输出 Bean 的普通属性、 数组属性、List集合属性和 map 集合属性


在Jspy页面中用EL表达式调用属性变量,输出数据更简洁。


EL运算语法:${ 运算表达式}


       empty 运算可以判断一个数据是否为空,如果为空,返回 true,否则返回flase


      ●值为 null


       ● 值为空串的时


       ● 值是 Object 类型数组,长度为零


       ● list 集合,元素个数为零


       ● map 集合,元素个数为零


       以上情况为空


EL 的三元运算和Java的三目运算符是一样的使用,只是语法表现不同


EL 的 11 个隐含对象  

62361a54a6e14d8baca87b857a846a75.png

EL 四个特定域变量

eae9cbb850d74ff58f034a11aaf36d0c.png

可通过 request(http请求) 对象来获取和 HTTP 协议相关的数据


请求的协议:request.getScheme()


请求的服务器 ip 或域名:request.getServerName()


请求的服务器端口号:request.getServerPort()


当前工程路径:getContextPath()


请求的方式(GET 或 POST):request.getMethod()


客户端的 ip 地址:request.getRemoteHost()


会话的唯一标识:session.getId()  


JSTL 标签库


JSTL 用于替换代码脚本,使 jsp 页面 变得更简洁。


JSTL 由五个标签库组成

6882d7ed7426453ea5c5cbbce9428ad6.png

使用前,需导入相关Jar包,导入后需要重新发布 web 工程,不然不会识别jstl。


<c:set/>:set 标签可以往域中保存数据


<c:if/>: if 标签用来做 if 判断。 test 属性表示判断的条件(用 EL 表达式输出)


<c:choose/>:相当于Java的switch

<c:when/>:相当于case

<c:otherwise/>:相当于default


这三个标签是一起组合使用的,使用的标签不是单标签,都要关闭。


<c:forEach/>:相当于for循环,用来遍历输出,主要有四种形式:


● 普通遍历输出 i 到 j

<c:forEach begin="1";end="5";var="i">
         <li>排名=${i}</li>
</c:forEach>


1.遍历 1 到 5,

2. 输出 begin 属性设置开始的索引 end 属性设置结束的索引

3. var 属性表示循环的变量(也是当前正在遍历到的数据)

4. 等价 for (int i = 1; i <= 5; i++)


● 遍历数组

<c:forEach items="${requestScope.sports}" var="sport">
    运动名称= ${sport}<br/>
</c:forEach>
    1. items 遍历的集合/数组
    2. var 遍历到的数据
    3. 等价 for (Object item: arr) {}


● 遍历 Map

<c:forEach items="${requestScope.cities}" var="city">
    城市: ${city.key}--${city.value}<br/>
</c:forEach>
    1. items 遍历的map集合
    2. var 遍历到的数据
    3. entry.key 取出key
    4. entry.value 取出值


● 遍历 Lis

<c:forEach items="${requestScope.monsters}" var="monster">
    个人信息: ${monster.id}-${monster.name}-${monster.skill}<br/>
</c:forEach>
    items 表示遍历的集合
    var 表示遍历到的数据
    monsters.属性值


相关文章
|
10天前
|
数据采集 JavaScript 搜索推荐
服务器端渲染(SSR)(Nuxt+Next.js)
服务器端渲染(SSR)技术在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js和Next.js分别是基于Vue.js和React.js的流行SSR框架。Nuxt.js提供自动化路由管理、页面级数据获取和布局系统,支持SSR和静态站点生成。Next.js支持SSR、静态生成和文件系统路由,通过`getServerSideProps`和`getStaticProps`实现数据获取。SSR的优点包括首屏加载快、SEO友好和适合复杂页面,但也会增加服务器压力、开发限制和调试难度。选择框架时,可根据项目需求和技术栈决定使用Nuxt.js或Next.js。
|
4月前
|
搜索推荐 Java 索引
Java中的服务器端渲染(SSR)
Java中的服务器端渲染(SSR)
|
3月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
33 3
|
3月前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
76 1
|
3月前
|
前端开发 安全 开发者
JSF文件上传,让Web应用如虎添翼!一招实现文件上传,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,文件上传是重要功能之一。JSF(JavaServer Faces)框架提供了强大的文件上传支持,简化了开发流程。本文将介绍JSF文件上传的基本步骤:创建前端表单、处理上传文件的后端Action类、将文件保存到服务器指定目录以及返回结果页面。通过示例代码,我们将展示如何利用JSF实现文件上传功能,包括使用`h:inputFile`控件和`ManagedBean`处理上传逻辑。此外,JSF文件上传还具备类型安全、解耦合和灵活性等优点,有助于提升程序的健壮性和可维护性。
39 0
|
3月前
|
UED
JSF文件下载:解锁终极文件传输秘籍,让你的Web应用瞬间高大上!
【8月更文挑战第31天】掌握JSF文件下载功能对构建全面的Web应用至关重要。本文通过具体代码示例,详细介绍如何在JSF中实现文件下载。关键在于后端Bean中的文件读取与响应设置。示例展示了从创建实体类到使用`&lt;h:commandLink&gt;`触发下载的全过程,并通过正确设置响应头和处理文件流,确保文件能被顺利下载。这将显著提升Web应用的实用性与用户体验。
71 0
|
3月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
55 0
|
3月前
|
开发者 Windows Android开发
跨平台开发新选择:揭秘Uno Platform与.NET MAUI优劣对比,帮你找到最适合的框架,告别选择困难症!
【8月更文挑战第31天】本文对比了备受关注的跨平台开发框架Uno Platform与.NET MAUI的特点、优势及适用场景。Uno Platform基于WebAssembly和WebGL技术,支持Windows、iOS、Android及Web平台,而.NET MAUI由微软推出,旨在统一多种UI框架,支持Windows、iOS和Android。两者均采用C#和XAML进行开发,但在性能、平台支持及社区生态方面存在差异。Uno Platform在Web应用方面表现出色,但性能略逊于原生应用;.NET MAUI则接近原生性能,但不支持Web平台。开发者应根据具体需求选择合适的框架。
131 0
|
3月前
|
缓存 UED 开发者
全面加速Angular应用:从代码拆分到服务器端渲染的性能优化全攻略——深入探讨提升加载速度的有效策略
【8月更文挑战第31天】在现代Web开发中,提升应用加载速度对增强用户体验至关重要,尤其对于使用Angular框架的单页应用而言更是如此。本文通过解答五个常见问题,提供了一份全面的Angular性能优化攻略,涵盖减少初始加载时间、处理大型第三方库、优化变更检测、利用缓存以及服务器端渲染等技术。通过这些方法,开发者能够显著提升应用性能,确保流畅高效的用户体验。
53 0
|
3月前
|
JavaScript 搜索推荐 API
Angular携手Angular Universal:全面实现服务器端渲染技术——从环境搭建到部署的详尽指南
【8月更文挑战第31天】在现代Web开发中,服务器端渲染(SSR)对于提升应用加载速度和SEO至关重要。Angular Universal作为Angular的SSR解决方案,允许在服务器上渲染应用,再发送至客户端,显著提高初始加载速度。本文将详细介绍如何使用Angular和Angular Universal实现SSR,并分享最佳实践。
50 0