一.JSP概述
Servlet缺点:1.HTML标签以字符串形式出现,处理HTTP响应报文工作比较十分繁琐;
2.所有的文本和HTML都是硬编码,表现层稍微小的变化,都需要重新编译;
个人观点:1.对于实现复杂页面不好观察;
2.整个交互逻辑处理繁杂;
3.改动需要重新编译。
JSP(JavaServer Pages)的出现解决了上面两个问题
注:Jsp:本质上是一个Servlet
Servlet/jsp容器会将jsp翻译为Servlet。
二.JSP注释
JSP注释:<%-- -->HTML注释:<!- --> :发送到浏览器做处理
三.JSP隐式对象
request javax.servlet.http.HttpServletRequestresponse javax.servlet.http.HttpDervletResponse
out javax.sevlet.jsp.JspWriter
session javax.servlet.http.Httpsession
application javax.servlet.ServletContext
config
pageContext
page
exception
例:request:
<%
String username=request.getParameter("username");
%>
out:
<%
out.println("Buffer size:"+response.getBufferSize());
out.println("Servlet name:"+session.getId());
out.println("Serlvet info:"+application.getServerInfo());
%>
四.指令
page命令:
<%@page attribute="value1" attribute="value2"%>page指令有一点点类似于属性设置值attribute="value"
page的指令常见属性设置:
import:定义一个或多个本页面中导入和使用的java类型
session:值为true会导入会话管理
值为false则相反
info:返回调用容器生成的Servlet类的getServletInfo方法的结果。
isErrorPage:标识本页是一个错误处理页面
contentType:定义本页面隐式对象response的内容类型,默认 text/html
pageEncoding:定义本页的字符编码,默认为:ISO-8859-1
language:定义本页中的脚本语言类型
isELIgnored:配置时是否忽略EL表达式。EL:Expression Language
include 命令:将其他文件中的内容包含到当前JSP页面。一个页面可以包含多个include指令
<%@include file="*.jspf">应用:将页面分模块化设计
例:import
<%@page import="java.util.Calendar"%>
<%@page import="java.util.Date"%>
<%@pagge impirt="java.util.*" %>
五.脚本元素
基础元素:<% %> java代码块以<%为开始,以%>为结束
表达式:
<%=expression %>
表达式例:<%=Calendar.getInstance().getTimeInMillis() %>
声明:可以声明在JSP页面中使用的变量或方法。
<%! %>
例:
<%!
public String getTodayDate(){return new Date().toGMTString();
}
public void jspInit(){
System.out.println("nsjk");
}
public void jspDestroy(){
System.out.println("hcsn");
}
%>注:禁用脚本元素:
<jsp-property-group>
<url-pattren>*.jsp<url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
六.动作
useBean创建实例:
<jsp:useBean id="name" class="*">
实例赋值setProperty
<jsp:setProperty name="*" property="attributeName" value="SttributeValue">
输出实例值
<jsp:getProperty name="" property="attributeName">
include
<jsp:include page="*.jsp">
<jsp:param name="text" value="how are you?">
</jsp:include>
include指令与include动作:
include的指令:资源引入发生在页面转换(jsp--->servlet)时,即当jsp容器将页面转换成Servlet时。include的动作:资源引入发生在请求页面时。
总结:include动作可以传递参数,而include指令不能传递参数
在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以包含文件和被包含文件不能有重名的变量或方法。
在应用<jsp:include>包含文件时,由于每个文件单独编译,所以变量和方法名不冲突。
forward:将当前页面转到其他页面
<jsp:forward page="*.jsp">
<jsp:param name="text" value="Please login"/>
</jsp:forward>
七.错误处理
page指令 isErrorPage属性标识一个JSP页面是错误处理页面
<%@page isErrorPage="true"%>