六、JSP
1.jsp三大指令
Page常用属性:
①import:<%@page import="java.text…"%>
②session:取值为true和false,表示当前页面session是否可以
③errorpage:指定出错响应页面<%@ page errorPage="/error.jsp"%>
④isErrorPage:指定当前页面是否为错误处理页面,可以说明当前页面是否可以使用exception隐藏对象变量。一般不能直接访问该页面,放在WEB-INF下。
注:WEB-INF下面资源需要转发才可以访问。
⑤contentType:指定当前jsp页面的响应类型,实际调用的是response.setContentType("text/html;charset=UTF-8");通常为text/html。
Include指令:
动态include:
<jsp: include page="included.jsp"/>
特点:在编译的jsp中只存在一个.java文件
静态include:
<%@ include file="included.jsp"%>
特点:会编译为两个.jsp文件
两者优缺点:
1. 静态include的结果是把其他jsp引入当前jsp,两者合为一体,可以达到数据的共享即可以说是统一编译的,而
动态include的结构是两者独立的,直到输出时才合并即为分别编译的.
2.动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都由自己创建,而静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.
3.动态包含总是检查被包含页面的变化,静态包含不一定检查被包含页面的变化.
4.动态包含可带参数,静态包含不能带参数.如(<jsp: include page="included.jsp">放入参数</jsp:include>);
taglib指令:
引入标签,如JSTL、shiro等标签在JSP页面使用.
2.jsp九个隐藏对象
out:向客户端输出数据,字节流,如:out.print("out");
request:接收客户端的http请求
response:响应客户端请求
session:保存会话信息
application:全局变量
page:当前页面
exception:运行异常
pagecontext:
config:
3.jsp七大动作
include:动态包含
useBean:JSP页面使用javaBean <jsp:useBean id="对象名" class="包名.类名" scope="作用范围(request/page/application/session)"/>
getProperty:获取javaBean的属性 <jsp:getProperty name="javaBean对象" property="javaBean对象属性名" />
setproperty:为对象设置属性值 <jsp:setProperty name="javaBean对象" property="javaBean对象属性名"/>
param:设置参数
forward:转向
plugin:插件
4.转发与重定向
转发:request.getRequestDispatcher("welcome.jsp").forward(request,response);
特点:浏览器地址不改变,属于同一request请求。可以访问WEB-INF下资源。
重定向:response.sendRedirect("welcome.jsp")
特点:浏览器地址改变,向服务器发送两个请求。注意在使用request.setAttribute()时的作用域。
5.jsp与servlet的区别
1).jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2).jsp更擅长于页面显示,servlet更擅长于逻辑控制。
3).Servlet中没有内置对象,jsp中有9个内置对象。
6.servelt的生命周期
创建servlet实列-->初始化参数-->调用servlet中service方法处理客户段请求-->销毁,调用destroy()方法指定哪些可以被系统GC处理。
7.EL表达式
使用方法:
${empty a} 如果a为null则为true
${pageScope/requestScope/sessionScope/…}
8.JSTL
<c:set var="变量名" value="值" scope="作用域">
<c:set target="对象名" property="对象属性" value="属性值">
<c:out value="值" default="默认值" escapeXml="false"> escapeXml属性为是否转义,默认转义
<c:remove var="属性名" scope="作用域">
<c:if test="条件" var="储存判断结果true/false" scope="作用域">
主体内容
</c:if>
<c:choose >
<c:when test="条件">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
<c:forEach items="集合名" var="当前成员" begin="起始位置默认0" end="结束位置" step="步长">
主体内容
</c:forEach>
Java面试复习(四)
最新推荐文章于 2023-02-21 18:39:09 发布