1.jsp语法
- <% 这里可以写java语句 这里的是局部语句 %>会被放到_jspservice中
- <%= 这里是java表达式 会输出到页面%>相当于out.print()
- <%! 这里定义类成员变量 %>直接放到类里不放到方法里
- 多个<%…%>可以通用
2.JSP是特殊的Servlet
* JSP是一种特殊的Servlet,当JSP页面首次被访问时,容器(Tomcat)会先把JSP编译成Servlet,然后再去执行Servlet。所以JSP其实就是一个Servlet!
* 客户端请求—>服务器—>index.jsp–>index_jsp.java–>index_jsp.class–>响应给客户端
3.index_jsp.java:
- 1.JSP生成的index_jsp.java存放在${CATALANA}/work目录下;
- 2.在JSP中的静态信息(例如等)在index_jsp.java中都是使用out.write()完成打印!这些静态信息都是作为字符串输出给了客户端。
- 3.JSP的整篇内容都会放到名为_jspService的方法中
- 4._jspservice方法
在_jspservice方法内定义了九大内置对象
3.JSP注释
我们现在已经知道JSP是需要先编译成.java,再编译成.class的。其中<%-- ... --%>
中的内容在JSP编译成.java时会被忽略的,即JSP注释。
也可以在JSP页面中使用html注释:<!-- … -->
,但这个注释在JSP编译成的.java中是存在的,它不会被忽略,而且会被发送到客户端浏览器。但是在浏览器显示服务器发送过来的html时,因为<!-- … -->
是html的注释,所以浏览器是不会显示它的。
4.jsp指令
JSP指令的格式:<%@指令名 attr1=”” attr2=”” %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的。
JSP中有三大指令:page、include、taglib,最为常用,也最为复杂的就是page指令了。
1.page指令
属性:
1.pageEncoding=”utf-8”设置字符编码
2.contentType=”text/html;charset=utf-8”相当于servlet中的response.setContentType(“text/html;charset=utf-8”)
以上俩个设置一个另一个字符集也是那个,如果都没有默认是ISO8859-1
3.import=”java.util.*”导入一些java包
4.errorPage=”a.jsp” 当前页面出错时会跳转到a.jsp
5.isErrorPage=true 表示当前页面是错误页面响应码是500这时可以使用exception内置对象,其他时间不行
6.buffer表示当前JSP的输出流(out隐藏对象)的缓冲区大小,默认为8kb。
7.authFlush表示在out对象的缓冲区满时如何处理!当authFlush为true时,表示缓冲区满时把缓冲区数据输出到客户端;当authFlush为false时,表示缓冲区满时,抛出异常。authFlush的默认值为true。
8.isELIgnored表示十分支持el表达式默认支持
9.language:只能是Java,这个属性可以看出JSP最初设计时的野心!希望JSP可以转换成其他语言!但是,到现在JSP也只能转换成Java代码;
10.info:JSP说明性信息;
11.isThreadSafe:默认为false,为true时,JSP生成的Servlet会去实现一个过时的标记接口SingleThreadModel,这时JSP就只能处理单线程的访问;
12.session:默认为true,表示当前JSP页面可以使用session对象,如果为false表示当前JSP页面不能使用session对象;
13.extends:指定当前JSP页面生成的Servlet的父类;
注:在web.xml页面中配置<jsp-config>
也可以完成很多page指定的功能!
2.include指令
include指令表示静态包含!即目的是把多个JSP合并成一个JSP文件!
实际上就是把生成的servlet的service方法合并,包含的语句在前面
<%@ include file=”a.jsp” %>
3.taglib指令
在JSP页面中使用第三方的标签库时,需要使用taglib指令来“导包”
<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
prefix的值可以自定义–在于你自己的使用
4.jsp动作标签–动作标签的作用是用来简化Java脚本的!
1.
<jsp:include>
标签的作用是用来包含其它JSP页面的!
实际上是在标签的地方调用所包含jsp的service方法
<jsp:include page="a.jsp"/>
2.
<jsp:forward>
标签的作用是请求转发!
<jsp:forward page="a.jsp"/>
3.
<jsp:param>
还可以在<jsp:include>
和<jsp:forward>
标签中使用<jsp:param>
子标签,它是用来传递参数的.
b.jsp
<jsp:forward page="a.jsp">
<jsp:param value="bvalue" name="bname"/>
</jsp:forward>
a.jsp
${param.bname }
<%
String bname=request.getParameter("bname");
out.print(bname);
%>
<%=bname %>
输出3个bvalue
5.JSP与JavaBean相关的动作标签
在JSP中与JavaBean相关的标签有:
<jsp:useBean>
:创建JavaBean对象;
<jsp:setProperty>
:设置JavaBean属性;
<jsp:getProperty>
:获取JavaBean属性;
<jsp:useBean id="user" class="demo.User" scope="page"/>
<jsp:setProperty property="username" name="user" value="zhang"/>
<jsp:setProperty property="password" name="user" value="dong"/>
<jsp:setProperty property="age" name="user" value="12"/>
<jsp:getProperty property="username" name="user"/>
<jsp:getProperty property="password" name="user"/>
<jsp:getProperty property="age" name="user"/>
<%=user %>
属性:
- id 自定义用来标识相当于对象名
- class 实体类的位置
- scope保存实体类对象的存储位置以及范围可以是4大域对象
- property对应的是属性名
- name表示的是哪个实体对象
- value 设置值