Jsp笔记(一)

小鱼笔记
Jsp基本语法

指令标识

语法:

<%@ 指令名 属性 1=“属性1的值” 属性2=“属性2的值”%>

指令名:

  • page 定义整个页面的相关属性
  • include 静态包含另外一个Jsp页面
  • taglib 自定义

<%@ page import=”java.util.*”%>

<%@ include file =”path”%>

<%@ taglib %>

表达式:

1
<%= 表达式 %>

%与=之间不能有空格,但=后可以有

1
2
<% String manager="mr";%>
管理员: <%= manager%>

注释

html注释

1
<!--...-->

客户端可见,下载源代码

隐藏注释:

1
<%-- ..... --%>

隐藏注释不能够从源代码中看到

动态注释:

1
<!-- <%=new Date()%> -->

包含文件标识:

1
<jsp:include page="url" flush="false|true"/>
指令存在很大差别
1
2
3
4
5
6
7
1.  include指令通过file 属性指定被包含的文件,而且file属性不支持任何表达式,而jsp:include通过page属性指定被包含的文件,而且page属性支持JSP表达式。
2. include指令是先把被包含文件原封不动的插入到包含页中,然后再有JSP编译器编译成一个Java文件,使用Jsp:include时,分别编译
3. include 不能有重名的变量和方法 jsp:include中可以

## 请求转发标识
```Java
<jsp:forward page="url"/>

传递参数标识

1
<jsp:param name="参数名" value="参数值"/>

例子

1
2
3
<jsp:forward page="modify.jsp">
<jsp:param name="userid" value="7"/>
</jsp:forward>

9个JSP内置对象

request

处理HTTP中的各项参数

访问请求参数

在页面中定义

1
<a href="delete.jsp?id=1&user=">删除</a>

在delete.jsp中获取参数的方法getParameter

1
2
3
4
<%
String id = request.getParameter("id");
String user = request.getParameter("user");
%>

id为1,user为空但不为null

解决乱码

1
<%= new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8")%>

所有的request的请求都是通过ISO-8859-1的,而在此页面采用的是UTF-8编码方式,通过上面这种方式可以防止乱码。

作用域中管理属性

1
request.setAttribute(String name,Object obiect);

name变量在request的范围内有效
对应方法

1
request.getAttribute("String name");

getAttribute()方法可以提取请求转发页面setAttribute()传的一些数据,然后对数据进行处理。

获取cookie

getCookies()
getName()
getValue()
addCookie()

获取客户端信息

requestscommon

显示国际化信息

request对象中的getLocale()和getLocales()方法允许获得本地语言

1
2
3
4
5
6
7
8
9
10
11
<%
Java.util.Locale locale=request.getLocale();
String str = "";
if(locale.equals(java.util.Locale.US)){
str="Hello,welcome to access our company's web!";
}
if(locale.equals(java.util.Locale.CHINA)){
str="您好,欢饮访问我们公司网站!";
}
%>
<%=str%>

response

响应客户请求,向客户端输出信息

重定向网页

1
response.sendRedirect(String path);

通过sendRedirect()方法将网页重定向到另一个页面,支持将地址重新定向到不同主机上,这一点与转发不同。在浏览器上重新得到网址,然后重新发送请求链接。重定向操作后,request中的属性全部失效,并且开始一个新的request对象

处理HTTP开头

禁用缓存

适用于一些安全性较高的网站

1
2
3
4
<%
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>

页面自动刷新
1
2
3
<%
response.setHeader("refresh","10");
%>

每隔十秒钟刷新一次

定时跳转网页
1
2
3
<%
response.setHeader("refresh","5;URL=login.jsp");
%>

5秒后跳向指定网页

设置输出缓冲

只有满足一下三种情况之一才会把缓冲区的内容写到客户端

  1. Jsp页面的输出信息已经全部写入到了缓冲区
  2. 缓冲区已满
  3. 在Jsp页面中,调用了response对象的flushBuffer()方法或out对象的flush()方法

response中对缓冲区进行配置的方法
response

session

通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话会一直存在下去,直到关闭浏览器,例如,Tomcat服务器默认为30分钟,不过这个时间可以通过编写程序进行修改

创建及获取客户的会话

将信息保存在session范围内

1
session.setAttribute().setAttribute(String name,Object obj)

获取保存在session范围内的信息

1
session.getAttribute(String name)

返回的是Object类型,所以要添加toString()方法或强制转换

1
2
String user=(String)session.getAttribute("username");
String user1=session.getAttribute("username").toString();

从会话中移动指定的绑定对象

1
session.removeAttribute(String name)

销毁session

虽然session对象过一段时间会自动消失,但对于某些实时统计在线人数的网站(例如聊天室),所以要手动销毁session来统计准确人数

1
session.invalidate();

会话超时管理

如果用户超过session存在时间后操作,会报错,为了避免这种现象,所以要对session的有效性进行判断

方法 描述
getlastAccessedTime() 返回客户端最后一次与会话相关联的请求时间
getMaxInactiveInterval() 以秒为单位返回一个会话内两个请求最大的时间间隔
setMaxInactiveInterval() 以秒为单位设置session的有效时间

application

application 用于保存所有应用程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。比session的生命周期更长

访问应用程序初始化参数

1
application.getInitParameter(String name);

返回已命名的参数值

1
application.getInitParameterNames();

返回所有已定义的应用程序初始化参数名的枚举
实例:应用getAttributeNames()方法获取web.xml中定义的全部应用程序初始化参数名,并循环输出

1
2
3
4
5
6
7
8
9
10
<%@ page import="java.util.*"%>
<%
Enumeration enema = application.getInitParameterNames();
while(enema.hasMoreElements()){
String name = (String)enema.nextElement();
String value = application.getInitPatameter(name);
out.println(name+":");
out.println(value);
}
%>

管理应用程序环境属性

方法 描述
getAttributeNames() 获取所有application对象使用的属性名
getAttribute(String name) 从application对象中获取指定对象名
getAttribute(String key,Object obj) 使用指定名称和指定对象在application对象中进行关联
removeAttribute(String name) 从application对象中去掉指定名称的属性

out

out对象用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区

向客户端浏览器输出信息。通过该方法向客户端浏览器输出信息与使用JSP表达式输出信息相同

1
2
3
4
<%
out.print("明日科技")
%>
<%= "明日科技"%>

println()方法

与print方法不同,在输出内容后,会输出一个换行符

管理影响缓冲

out对象比较重要的一个功能
outmethod

pageContext

获取会话范围,通过它可以获取JSP页面的request,session,application,exception
pageContextmethod1
pageContextmethod2

config

读取web.xml配置信息的config对象,通过getServletConfig()方法可以获取一个config对象,当以个Servlet初始化时,容器吧某些信息通过config对象传给这个Servlet
configmethod

page

应答或请求page对象,可以用来当作this关键词的别名
pagemethod

exception

获取异常信息,只有在page指令中设置为isErrorPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象无法编译JSP文件。
exceptionmethod