1、JSP优点
(1)一次编写,到处运行;(2)支持多平台;(3)强大的可伸缩性,支持一台服务器或者集群;(4)众多开发工具的支持;
2、JSP基本语法
一般分为6种:
(1)编译语句:<%@ 指示名 [属性=“属性值”]%>,如:<%@ page contentType="text/html;charset=GBK"%>
(2)声明语句:<%! 声明语句;[声明语句;]...%>
(3)程序代码:<%程序代码%>
(4)注释语句:<%--注解--%>
(5)运算表达式:<%=表达式%>
(6)动作语句:<JSP:动作名[属性|...]/>
3、表单提交
<form name="form1" action="" method="post"> ... ... </form>
method的参数值可以为post或者get,都可以向服务器传送数据但是机制不一样:
(1)get是把参数数据队列追加到提交表单的Action属性所指的URL地址中,值和表单内各个字段一一对应,用户通过URL可以看到;
<form method="get" action="input.jsp?username=jsp">与<form method="get" action="input.jsp">是一样的,参数会被忽略;
安全性非常低;
(2)post是通过HTTP post机制,将表单内各个字段与内容放置在HTML Header内一起传送到Action属性所指的URL地址,用户看不到;
<form method="get" action="input.jsp?username=jsp">与<form method="get" action="input.jsp">是不一样的;
安全性较高;
4、JSP中两种include:
(1)<%@ include file="" %>,是在编译阶段执行;在JSP转换为Servlet之前与它融合;
(2)<JSP:include page="" flush="true" />,在请求阶段执行;引入执行页面或Servlet所生成的页面;
5、forword和sendRedirect
(1)form被提交至a.jsp时,在a.jsp中使用forword()重定向至b.jsp,form提交的参数会自动传递到b.jsp。执行时浏览器中地址不变;
(2)sendRedirect()可以带参数传递,同时它可以重定向至不同的主机上,浏览器中会出现重定向页面的URL地址;
6、JSP的内置对象
不用声明可直接使用,这些对象包括request、response、pageContext、session、application、out、config、page
(1)request对象:对象类型来自javax.servlet.http.HttpServletRequest接口
对象的方法:setAttribute()、getAttribute()、getAttributeNamesInScope()、removeAttribute()、getParameter()、getParameterNames()、、getParameterValues()、getParameterMap()、getHeader()、getHeaderNames()、getHeaders()、getIntHeader()、getDateHeader()、getCookies()、getContextPath()、getMethod()、getProtocol()、getQueryString()、getRequestedSessionId()、getRequestURL()、getRemoteAddr()、getRemoteHost()、getRemotePort()、getRemoteUser()、setCharacterEncoding();
(2)response对象:对象类型来自javax.servlet.http.HttpServletResponse接口
对象的方法:addCookies()、addDateHeader()、addHeader()、addIntHeader()、setDateHeader()、setHeader()、setIntHeader()、sendError()、setStatus()、encodeRedirectURL();
(3)pageContext对象:
a、提供JSP程序执行时期间所需要用到的属性的方法,如:session、application、config和out等;利用JSPFactory.getDefaultFactory()取得预设的JSPFactory对象,然后用这个对象的getPageContext()方法取得pageContext对象。
b、对象的方法:getException()、getOut()、getPage()、getRequest()、getResponse()、getServletConfig()、getServletContext()、getSession()、getAttribute()、getAttribute()、getAttributeNamesInScope()、getAttributeScope()、removeAttribute()、setAttribute()、findAttribute();
(4)session对象:对象类型来自javax.servlet.http.HttpSession接口,取得方式是调用pageContext.getSession()方法
对象的方法:getCreationTime()、getId()、getLastAccessedTime()、getMaxInactiveInterval()、setMaxInactiveInterval()、invalidate()、isNew();
(5)application对象:对象类型来自javax.servlet.ServletContext接口,取得方式是调用pageContext.getServletContext()方法
与session作用类似,最大不同在于作用域,Web服务器为每个用户创建一个session,但所有用户会共享一个application,一旦创建直到服务器关闭都存在;
对象的方法:getMajorVersion()、getMinorVersion()、getServerInfo()、getMimeType()、getContext()、getRealPath()、log();
(6)out对象:对象类型来自继承自抽象类javax.servlet.JSP.JSPWriter的类,取得的方式是调用pageContext.getOut()的方法
对象的方法:clear()、clearBuffer()、close()、getBufferSize()、getRemaining();
7、使用JSP操作Cookie
(1)写Cookie
<%
String cookieName="js";
Cookie cookie = new Cookie(cookieName,"js网页");
cookie.setMaxAge(365*24*60*60);
response.addCookie(cookie);
%>
(2)读取Cookie
<%
Cookie cookies=request.getCookies();
Cookie cookie=null;
String value=null;
String name=null;
for(int i=0;i<cookies.length;i++){
cookie = cookies[i];
name=cookie.getName();
value=cookie.getValue();
}
%>
8、利用缓存技术提高JSP性能
OSCache标记库由OpenSymphony设计,它是一个开源的框架,提供了现有的JSP页面内实现快速内存缓存的功能。
(1)加入页面声明:
<%@ taglib uri="cachetags" prefix="cache" %>
(2)缓存页面
<cache:cache> ...缓存的内容...</cache:cache>