JSP页面元素
a.脚本Scriptlet
i
<%
String name="zhangsan";
out.println("hello"+name); //定义局部变量、java语句
init();
%>
ii
<%!
public String bookname; //定义全局变量
public void init() //定义方法
{
bookname="java书";
}
%>
iii
<%=
"hello...."+bookname% //输出表达式,不加分号
>
一般而言,修改web.xml、配置文件、java需要重启服务,但是修改Jsp/html/css/js,不需要重启
注意:out.println()不能回车;要想回车:“<br/>
"。<%=%>中可以直接解析html代码
b.指令
- page指令
<%@ page… %> - page指定的属性:
language:jsp页面使用的脚本语言
import:导入类
pageEncoding:jsp自身编码 jsp->java
contentType:浏览器解析jsp的编码
c.注释
html注释 <!-- -->
java注释 // /* …*/
jsp注释 <%-- --%>
JSP九大内置对象(自带的,不需用new 也能使用)
-
out :输出对象;向客户端输出内容
-
request:请求对象;存储”客户端向服务端发送的请求信息”
request对象常见的方法:
i. String getParameter(String name):根据请求的字段名key(input标签的name属性),返回值value(input标签的value属性值)
ii. String[ ] getParameterValues(String name):根据请求的字段名key,返回多个字段值values。
iii. void setCharacterEncoding(“编码格式utf-8”):设置post请求编码。
iiii. getRequestDispatcher(“b.jsp”).forward(request,response) :请求转发的方式跳转页面 A->B
iiiii. getServerContext():获取项目的ServletContext对象
示例:
get提交方式:method="get"和地址栏、超链接(<a href="xx">
)请求方式默认都属于get提交方式。
get和post提交方式的区别:
get:get方式在地址栏显示请求信息(但是地址栏显示信息有限,4-5kb。
post:文件上传操作,必须使用post。(推荐post)
统一请求的编码 request
get方式请求,如果出现乱码,解决:
a. 统一每一个变量的编码
new String( 旧编码,新编码);
b. 修改server.xml,一次性更改tomcat默认get提交方式的编码(utf-8)
URIEncoding=“UTF-8” -
response:响应对象;
respond提供的方法:
i. void addCookie(Cookie cookie);服务端向客户端增加cookie对象
ii. void sendRedirect(String location) throws IOExpection:页面跳转的一种方式(重定向)。
iii. void setContetType(String type):设置服务端响应的编码(设置服务端的ContentType类型)
示例:login.jsp -> check.jsp -> success.jsp
注意:response的重定向和request的请求转发区别
-
pageContent:JSP页面容器
-
session
(1)
a. cookie(客户端,不属于内置对象):Cookie是由服务端生成的,在发送给客户端保存。相当于本地缓存的作用。
作用:提高访问服务端的效率,但是安全性较差。
Cookie: name=value 。由javax.servlet.http.Cookie类生成。Cookie对象有构造方法public Cookie (String key,String value);String getName() 获取name ; String getValue() 获取value ; void setMaxAge(int expiry),最大有效期(秒)。
b. 服务端准备Cookie:
response.addCookie(Cookie,cookie)
页面跳转(转发,重定向)
c. 客户端获取cookie:
request.getCookies();
d. 服务器增加对象response,客户端获取对象request对象,不能直接获取某一个单独的对象,只能一次将全部的cookie拿到
(2)
session:会话
a. session机制:客户端第一次访问服务端时,服务端会产生一个session对象(用于保存该客户的信息);并且每个session对象会有唯一的sessionID(用于区分其他session);服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionID的值。 服务端在响应客户端的同时将该cookie发送给客户端,至此,客户端就有了一个cookie(JSESSIONID),因此,客户端cookie就可以和服务端的session一一对应。(JSESSIONID=sessionID)
b. session存储在服务端;session是在同一个客户请求时共享;实现机制,在第一次客户请求时产生一个sessionID并复制给cookie的JSESSIONID然后发给客户端。
c. session方法:
(1)getID() :获取sessionID
(2)boolean isNew() :判断用户是否是第一次访问
(3)void invalidate() :使session失效(退出登录、注销)
(4)void setMaxInactiveInterval(秒) :设置最大有效非活动时间。
(5)int getMaxInactiveInterval(秒) :获取最大有效非活动时间
(6)void setAttribute() 和 Object getAttribute() 获取属性值
-
application :全局对象
a. String getContextPath() 虚拟路径
b. String getRealPath() 绝对路径(获取虚拟路径相对的绝对路径) -
config :配置对象(服务器配置信息)
-
page :当前JSP页面对象(相当于java中的this)
-
exception :异常对象
四种范围对象(小->大)
a. pageContext 当前页面有效(页面跳转无效)
b. request 同一次请求有效
c. session 同一次会话有效
d. application 全局有效(整个项目有效)
以上4个对象共有的方法:
(1)Object getAttribute(String name) : 根据属性名,设置属性值
(2)void setAttribute(String name,Object obj) : 设置属性值(新增,修改)// 如果对象name之前不存在,则新建一个name对象;若存在,则将name值改为obj。
(3)void removeAttribute(String name) : 根据属性名,删除对象