当前位置 : 主页 > 编程语言 > java >

JSP指令和动作元素

来源:互联网 收集:自由互联 发布时间:2021-06-25
JSP有三大指令: page include taglib 用法:%@+指令% 1.page指令: 一般放在jsp文件最上面,设置页面的一系列属性和导入包 %@ page import="要导入的包” pageEncoding="当前页面编码" contentType="text

JSP有三大指令:

page include taglib 用法:<%@+指令%>

1.page指令:

一般放在jsp文件最上面,设置页面的一系列属性和导入包

<%@ page import="要导入的包” pageEncoding="当前页面编码" contentType="text/html,charset=xxx"%>

<%@ page errorPage="发生异常的时候跳转的指定页面" isErrorPage="当为true是表示为错误页面,才可以使用exception对象"%>

一个页面里面page指令可以出现多个,然后注意:如果pageEncoding没有指定,那么默认为contentType的值,如果pageEncoding和conTentType都没有指定,那么默认值为iso-8859-1,如果没有指定contentType属性,那么默认为pageEncoding的值,如果contentType和pageEncoding都没有指定,那么默认值为iso-8859-1

然后我对这个pageEncoding属性和contentType有点不清楚,这是搜到的结果:

pageEncoding是jsp文件本身的编码
  contentType的charset是指服务器发送给客户端时的内容编码
  JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。
  第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
  第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
  JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。
  第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效

看完以后也就是说pageEncoding是用于服务器编译jsp文件用的编码,contentType是显示在客户端解码时用的编码,一般pageEncoding是不用写的,contentType编译器像idea和eclipse也会帮我们开文件的时候写好不用操心

2.include指令

<% @include file="页面" %>

这个效果相当于把该页面的代码copy过来,也就是插入该位置,统一编译

3.taglib指令

还没用过的指令,也是不常用的指令,看博客上说是用来导入第三方标签库的

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

prefix:指定标签前缀,这个东西可以随意起名
uri:指定第三方标签库的uri(唯一标识)
当然,需要先把第三方标签库所需jar包放到类路径中。

然后说一下idea的使用:

一开始写jsp的时候用到jsp内置对象像out,request,response等对象的时候没有智能提示很难受,后来就搜了博客学习了一种叫全球化依赖的设置,也就是将项目里面所有的文件都可以加入特定的智能提示,讲一下设置,也很简单:

我们在写jsp文件的时候没有提示,主要是servlet-api.jar和jsp-api.jar这两个包没有设置,我们来到左上角的file里找到project structure,来到global Libraries点第一个小绿色加号,来到tomcat文件下的lib包找到那两哥们加进去,然后右边框框看看有没有加进去,没加进去就再用加号一样加进去就可以发现有智能提示了

jsp动作元素:

<jsp:include page="xxx"/>

这个和上面的include指令不同,这个相当于解析了page的内容以后返回结果到当前页面

这也是一个面试常考点,下面是慕课网的一张图:


<jsp:forward page="xxx"/>表示页面转发到page指定的页面去


<jsp:param>该动作常作为上面的forward标签和include的子标签,用来给其他页面传递参数

比如:

<jsp:include page="a.jsp">

<jsp:param name"username" value="hhh"/>

</jsp:include>

这样a.jsp页面就会收到一个新的参数名为username值为hhh

网友评论