-
JSP是啥?
JSP其实是一种综合HTML、XHTML、XML的代码,能够动态地创建网页,与Java servlet密不可分。JSP页面实质也是一个HTML页面,只不过它包含了用于产生动态网页内容的Java代码。
-
JSP结构
结构和下面的处理很相关(自己画的可能比较丑,能看懂就行)
-
JSP处理
JSP向web server发出请求,web服务器的组件调用Servlet,执行servlet类(Java的一种类),然后servlet将处理结果嵌入HTTP response并生成HTML,返回给服务器。
-
JSP生命周期
从其被创建到最终被销毁的时间就可以简单的理解成生命周期
代码实例:
public void jspInit(){
// 初始化代码
}
public void jspDestroy()
{
// 清理代码
}
生命周期内则是一些服务器处理代码
-
JSP语法注意(仅个人,不代表全部)
声明:<%! int i = 0; %>
表达式:<%= 表达式 %> 例:<%= (new java.util.Date()).toLocaleString()%>
指令标签的使用:
格式:<%@ directive attribute="value" %>
例:<%@ include file="文件相对 url 地址" %>
<jsp:directive.include file="文件相对 url 地址" />
行为标签
行为标签主要有这10种,使用很简单,查看用法即可
例如:实例化对象并设置属性
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName" property="someProperty" .../>
-
JSP隐藏(内置)对象
request对象
常用方法 | 方法介绍 |
---|---|
String getParameter(String name) | 返回name指定参数的参数值 |
String[] getParameterValues(String name) | 返回包含参数name的所有值的数组 |
void setAttribute(String,Object) | 存储此请求中的属性 |
Object getAttribute(String name) | 返回指定属性的属性值 |
String getContentType() | 得到请求体的MIME类型 |
String getProtocol() | 返回请求用的协议类型及版本号 |
String getServerName() | 返回接受请求的服务器主机名 |
int getServerPort() | 返回服务器接受此请求所用的端口号 |
String getCharacterEncoding() | 返回字符编码方式 |
void setCharacterEncoding() | 设置请求的字符编码方式 |
int getContentLength() | 返回请求体的长度(以字节数) |
String getRemoteAddr() | 返回发送此请求的客户端IP地址 |
String getRealPath(String path) | 返回一虚拟路径的真实路径 |
String request.getContextPath() | 返回上下文路径 |
request的一个重要用途就是获取客户端的基本信息。下面用程序来测试作用:
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="gb2312" %> <html> <head> <title>requestTest</title> </head> <body> 提交方法:<%= request.getMethod()%><br> 请求的URL地址:<%=request.getRequestURI()%><br> 协议名称:<%=request.getProtocol()%><br> 客户端请求服务器文件的路径:<%=request.getServletPath()%><br> URL的查询部分:<%=request.getQueryString()%><br> 服务器的名称:<%=request.getServerName()%><br> 服务器的端口号:<%=request.getServerPort()%><br> 远程客户端的IP地址:<%=request.getRemoteAddr()%> </body> </html>
response对象
response与request是一对相对应的内置对象,response可以理解为客户端的响应
response对象的功能分为以下四种:
(1)设置响应头信息
(2)发送状态码
(3)设置响应正文
(4)重定向
设置响应头信息
使用该方法设置的响应头最终会发送给客户端浏览器!
(1)response.setHeader(“content-type”, “text/html;charset=utf-8”):设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);
(2)response.setHeader("Refresh","5; URL=http://www.baidu.com"):5秒后自动跳转到百度主页。
设置状态码及其他方法
(1)response.setContentType("text/html;charset=utf-8"):等同与调用response.setHeader(“content-type”, “text/html;charset=utf-8”);
(2)response.setCharacterEncoding(“utf-8”):设置字符响应流的字符编码为utf-8;
(3)response.setStatus(200):设置状态码;
(4)response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。
重定向
response.setHeader("Location", "http://www.baidu.com");
和response.sendRedirect("http://www.baidu.com")两种方法
session对象
session的生命周期:当用户访问某个页面到关闭浏览器,这段使时间。
session和cookie:session和cookie对象是一一对应关系。JSP引擎会将创建好的session对象存放在对应的cookie中。
主要方法:
1. getAttribute( String name )
获取指定名字name相联系的信息.
2. getAttributeNames()
返回Session对象中存储的每一个属性对象,其结果为一个类举的实例.
3. getCreationTime()
返回Session被创建的时间.最小单位为千分之一秒.
4. getId()
此方法返回惟一的标识,这些标识为每个Session而产生.当只有一个单一的值与一个Session联合时,或当日志信息与先前的Session有关时,它被当做键名用.
5. GetLastAccessedTime()
返回当前Session对象最后被客户发送的时间,最单位为千分之一秒.
6. GetMaxInactiveInterval()
返回总时间(秒),负值表示Session永远不会超时.该时间为该Session对象的生存时间.
7. removeAttribute( String name )
删除与提定名字name的相联系的信息.
8. setAttribute( String name , java.lang.Object value )
设置指定名字name的属性值value,并将之存储在Session对象中.
session一般应用在判断用户是否登录
实例:
<%@page contentType="text/html;charset=GB2312"%>
<html>
<head> </head>
<body>
<%String s = session.getId(); //获取session ID号 %>
<p>你的session对象ID是:</p>
<%=s %> <%!
int Num = 0; //定义前面要加!号
synchronized void countPeople() { //同步方法
Num++;
}
%>
<%
if (session.isNew()) { //判断是否为新用户
countPeople();
String str = String.valueOf(Num);
session.setAttribute("count", str); //将str 添加到session对象中
}
%>
<p>
你是第<%=(String)session.getAttribute("count")%>个访问本站的人
</p>
<!--将session对象的count值取出-->
</body>
</html>
application对象
application常用的方法
-
public void setAttribute(String name,Object value)使用指定名称讲对象绑定到此会话。
- public Object gerAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则放回null
- Enumeration getAttributeNames()返回所有可用属性名的枚举
- Strring getServerInfo()返回jsp(Servlet)引擎及版本号
其他四个对象
- out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
- config(ServletConfig):对应“真身”中的ServletConfig;
- page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象,引用为Object类型;
- pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
- exception(Throwable):只有在错误页面中可以使用这个对象;
个人JSP学得较浅,各类书籍对jsp的介绍也不同,可参考书籍《JSP从零开始学(刘鑫)》《head first servlet & jsp》