JavaWeb(一)JSP原理,组成

JSP(Java sever pages):一种用于开发动态web页面(资源)的技术。

jsp页面是在服务器上运行的一个页面,一个jsp页面就是一个类。写jsp就像在写html,jsp允许在页面中编写java代码,并允许开发人员在页面中获取request,response等web常用开发对象,实现与浏览器的交互。

JSP原理:

JSP 的执行过程:

(1) 客户端发出Request (请求); (2) JSP Container 将JSP 翻译成Servlet 的源代码; (3) 将产生的Servlet 的源代码经过编译后,加载到内存执行; (4) 把结果Response (响应)发送至客户端。

JSP和Servlet的执行效率相差不大,只是第一次执行JSP页面时需要进行编译。 一般人都会以为JSP 的执行性能会和Servlet 相差很多,其实执行性能上的差别只在第一次的执行。因为JSP 在执行第一次后,会被编译成Servlet 的类文件,即为XXX.class,当再重复调用执行时,就直接执行第一次所产生的Servlet,而不用再重新把JSP编译成Servlet。因此,除了第一次的编译会花较久的时间之外,之后JSP 和Servlet 的执行速度就几乎相同了。 在执行JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request Time) 。

1. JSP文件先要被服务器翻译成Java文件(Servlet),在tomcat中翻译后的Java文件在tomcat下的 work/Catalina /localhost 中相应名字的应用目录里。 2. 编译成Java(Servlet)文件 3. 运行.class文件 Tomcat的全局配置文件$CATALINA_HOME/conf/web.xml 在Tomcat下的conf目录中的web.xml是服务器全局的配置文件,其中要想关闭列表显示叫要把 <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> 修改为true

JSP的组成元素:

1, 指令 page指令

<%@ page ..........%> 

include指令静态引入,引入其他的网页,相当于将两个页面合成一个。公用一个request对象。

页面跳转可以直接在页面后面加?变量名=值(test.jsp?name=admin) 的方式传参数,这种静态包含不可以。 taglib指令---标准标签库(JSTL),Taglib指令用于在JSP页面中导入标签库

errorPage---定义当当前页面出错时跳转的页面--如果当前页面出错则跳转到该页面,注意,需要在出现错误的提醒界面有   isErrorPage="true"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>出现错误的提醒页面</h1>
<h3><%=exception.getMessage() %></h3>
</body>
</html>

2, 表达式 <%=变量名%>

<%=sum %>

3, 脚本 <% 代码内容 %>

<%    
    for(int i=1;i<=5;i++){
        sum=sum*i;
    }
%>

单个脚本片段的Java语句可以是不完整的,但是整个页面中组合的Java语句必须是完整的。

4, 声明 <%! 代码声明 %>

可用于定义jsp页面转换成servlet程序的静态代码块,成员方法和变量。可以单独定义在一个声明中,也可以定义到同一个声明中。声明中不能使用九大内置对象。

<%!int sum=1;
%>

5, 注释

JSP注释:<%-- … --%>,转化阶段消失,只能被开发人员看到

JAVA注释://、/**/、/***/,编译阶段消失

HTML注释:<!-- … -->, 不会消失,在页面中也能看到

6, 一些静态内容

jsp中html内容称为模板元素,jsp模板元素定义了网页基本骨架,即定义了页面结构和外观。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

PHP版本号--phpversion(),PHP_VERSION,PHP_VERSION_ID

PHP版本号的命名规则 主版本号,次版本号,发布版本号 例如:7.0.12:7指的是主版本号,0是次版本号,12是发布版本号 PHP版本号的获取 1.phpve...

31790
来自专栏JavaNew

Spring Boot实战:静态资源处理

27140
来自专栏ASP.NETCore

TinyFox在VS2015上的调试器

开源了 https://github.com/maxzhang1985/TinyFoxDEBUG

14430
来自专栏java思维导图

JPA、Hibernate、Spring data jpa之间的关系,终于明白了

全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。

22350
来自专栏http://www.cnblogs.com

centos6.5编译安装php7

1.安装依赖软件库:   yum install -y libxml2-devel libtool* curl-devel libjpeg-devel libp...

524110
来自专栏Hongten

python开发_thread_线程_搜索本地文件

========================================================

11920
来自专栏hbbliyong

JPA、Hibernate、Spring data jpa之间的关系,终于明白了

全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。

10020
来自专栏Petrichor的专栏

论.idea文件夹是干嘛的

python为什么每次创建的文件目录下都含 .idea/文件夹?该文件夹又是用来干嘛的?

1.5K30
来自专栏开源优测

[接口测试 - 基础篇] 12 还是要掌握python日志管理模块的

python logging模块介绍 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的...

38280
来自专栏Spring相关

Spring Boot 日志配置

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了...

19260

扫码关注云+社区

领取腾讯云代金券