(jsp)JSP基础概念

1.jsp是什么?
在这里插入图片描述
2.jsp的实现流程:
在访问第一次jsp后,服务器会把jsp翻译成.java文件再编程.class文件,然后再执行。jsp文件的样式如下

jsp翻译成的java文件放在如下路径:D:\eclispe\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\work\Catalina\localhost\22-jsp\org\apache\jsp

在这里插入图片描述3.jsp文件的样式,对应它翻译之后文件的样式如下对比
jsp文件样式
在这里插入图片描述Java文件样式
在这里插入图片描述jsp也属于servlet的一种
通过翻译之后的jsp的Java文件,可以看到jsp也是Servlet文件的一种
在这里插入图片描述

JSP规范

在这里插入图片描述

JSP里面的java代码块的使用规则

1.注释

<%-- 注释 --%>

2.jsp中的java代码片段

<% 代码块  %>
我们知道的是,服务器会把jsp翻译成java文件(实际上是一个servlet),而jsp文件里的内容是放在service方法下的,那么这么代码块里的内容就是放在方法service下的代码,所以得遵循放在方法下代码的规则,如不能加访问权限符,如下
<%
 private int i =5;
 %> //这样的语法是不允许的,因为局部变量不能加访问权限符

3.jsp中的声明语句块

<!% 代码块%>
通过内容2,可知声明语句块里面的内容,是跳出service方法,是放在类下面的,定义的变量就是成员变量,同时也可以定义方法,如下
<!% 
private int i = 3;
public void test(){
	System.out.println("this is test");
}
%>

4.jsp中的表达式块

<% int count = 3%><br>
count = <%= count%> //这时候会在浏览器输出cout = 3

通过例子,可以看出不能写分号,因为count按表达式被写入了标准输出流,输出到浏览器页面

JSP中的内置对象

一下都是在service方法里得兑对象
还有一个exception对象,在page指令里面详细介绍

 final javax.servlet.jsp.PageContext pageContext;
 javax.servlet.http.HttpSession session = null;
 final javax.servlet.ServletContext application;
 final javax.servlet.ServletConfig config;
 javax.servlet.jsp.JspWriter out = null;  //标准输出流
  final java.lang.Object page = this;  //代表当前得servlet对象,不常用
  javax.servlet.jsp.JspWriter _jspx_out = null;
  javax.servlet.jsp.PageContext _jspx_page_context = null;
  

JSP指令名称

在这里插入图片描述1.page指令
page指令用于设置当前JSP页面的象关信息,一个JSP文件可以包含多个page指令,常用的page指令得属性以及意义如下

常用得page属性有:
	1.pageEncoding
	2.contentType
	3.import
	4.errorPage
	5.isErrorPage
	6.sessopm

(1).pageEncoding
作用:用于设置当前JSP页面所使用得字符编码格式,即,用户在浏览器中通过右击查询编码所看到的字符编码格式
用法:

<%@ page pageEncoding = "utf-8" %>
在java文件里,会被翻译为如下得语句:
response.setContentType("text/html;charset=utf-8");

(2).contentType
作用:和pageEncoding大体相似,区别在于contentType可以设置不同得文本类型,而pageEncoding 默认为text/html

<%@ page contentType= "text/html;charest=utf-8" %>

(3).import
作用:导包,例如在jsp中使用Date类,就需要提前使用import导包

<%@ import="java.util.*" %>
用例:如下代码,就需要导包
<% 
	SimpleDateFormat s1 = new SimpleDateFormat("yyyy年MM月dd日 	H:m");
	Date d1 = new Date();
	String str = s1.format(d1);
%>
	日期为:<%= str %>

(4) errorPage,当程序发生错误跳转到改异常处理页面
isErrorPage ,当jsp有这个属性后,代表这个页面为异常处理页面,会加入Excepiton属性
index2.jsp内容如下

<%@ page errorPage = "errpage.jsp" %>  //代表发生错误后跳转至errpage.jsp

以下是errpage.jsp的内容

<%@ page isErrorPage = "true"%> //代表当前页面为错误处理页面,可以显示错误的信息
//可以在err页面插入以下代码
ex = <%= exception.getMessage() %>//通过这个可以,输出具体是什么错误

(5)session
使用方法如下

<%@ page session = "false"%> //默认是true,关闭了之后,将不会在servlet里创建按session了,那么读取的时候不会存在即使是空,也能读出来的情况
详解:为true时,servlet内部会有一个内部类如下:
   javax.servlet.http.HttpSession session = null;
即,即使没有session也会创建一个session
但是我们在读取session的数据时,都是希望,如果没有session,就不必要创建新的(session部分知识)

2.include指令
可以在一个jsp文件里,包含着另外一个jsp文件的路径,另外一个jsp文件的内容被全部翻译至当前及jsp文件
具体用法如下:
以下链接方式,称为静态联编

<%@ include file = "next.jsp"	%>   //则可以插入next.jsp里面的内容

采用静态联编时,两个jsp文件之间的变量都是互相认可的,因为都是写在同一个servlet应用里的,但是在eclipse编译的时候会显示错误,
在这里插入图片描述

JSP动作

具体语法格式如下:
在这里插入图片描述
替换掉了上面介绍的JAVA代码块,使代码看起来更加的简洁
主要包含forward()和include()两个动作
forward和include的区别,和之前请求转发里两个动作是一样的,主要区别在:标准输出流开启的时间不同
下面两幅图大体介绍两者不同差别的原理:
在这里插入图片描述
在这里插入图片描述

示例代码

before
<jsp:forward page = "index2.jsp"/>  //forward动作的时候,只会在index2.jsp再打开输出流,输出的内容是index2.jsp里面的内容
after
before
<jsp:include page = "index2.jsp"/>  //在本jsp文件中就会打开输出流,本jsp文件里的内容一同输出
after

以上就是动态联编
静态联编和动态联编的区别:
静态联编是将两个页面的内容放在了一个jsp页面下,生成一个servlet程序,则两个jsp文件中相同名字的变量意义是相同的。
动态联编是分别生成两个不同的servlet程序,所以可以用同名的变量代表的意义是不相同的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值