Jsp相关
jsp里面: HTML java代码,指令
1.内嵌代码
<% 局部变量/java语句 %>
<%! 全局变量/定义方法 %>
<%=输出表达式 %>
2.一些指令:
1、page指令:<%@ page 属性du1="…" 属性2="…" …%>,应用于整个JSP页面,定义zhiJSP页面的一些属性和属性值;
可指定的属性:
language = “java”, jsp页面使用的脚本语言
import 导入类
contentType jsp文件自身编码
pageEncoding 浏览器解析jsp编码
2、include指令:<%@include file=“URL” %>,用来指定JSP被编译时,dao需要插入的文本或者代码;
待补充
3、taglib指令:<%@taglib prefix="…" uri="…" %>,在JSP页面中声明并调用标签;
待补充
3.注释
jsp注释格式:<%-- --%>
4.JSP九大内置对象
JSP9大内置对象
pageContextJSP页面容器
request 请求对象
response响应对象
session会话对象
appliation全局对象
config 配置对象(服务器配置信息)
out输出对象
page当前JSP页面对象(相当于java中的this)
exception异常对象
out:输出对象,向客户端输出内容
request:请求对象;存储“客户端向服务端发送的请求信息”
request对象的常见方法:
**1.geterverContext()∶获取项目的ServletContext对象
2.String getParameter(String name):根据请求的字段名key ,返回字段值value
3.String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value(checkbox)
4.void setCharacterEncoding("编码格式utf-8"):设置请求编码(tomcat7以前默认iso-8859-1,tomcat8)
5.getRequestDispatcher(b.jsp"). forward(request, response); :请求转发的方式跳转页面A ->B
6.ServletContext getServerContext(): 获取项目的ServletContext对象
5.get与post
http://localhost:8888/MyJSpProject/show.jspuname=aakupwd=123kuage=22kuhobbies=%E7%AF%AE%E7%90%8:
连接/文件?参数名1=参数值1&参数名2=参数值2&参数名1=参数值1
get提交方式: method="get”和地址栏
请求方式默认都属于get提交方式
get 与post请求方式的区别:
a.get方式在地址栏显示请求信息(但是地址栏能够容纳的信息有限,4-5KB;如果请求数据存在大文件,
b.文件上传操作,必须是post
推荐使用post
6.统一请求的编码request
1.get方式请求如果出现乱码
解决:
a.统一每一个变量的编码(不推荐)
new String(旧编码,新编码);
name = new String (name. getBytes(“iso-8859-1”), “utf-8”);
b.修改server.xml ,一次性的更改tomcat默认get提交方式的 编码(utf-8)
建议使用tomcat时,首先在server. xml中统一get方式的编码… URIEncoding=“UTF-8”
tomcat7 (iso-8859-1)
tomcat8 (utf-8)
1.post方式请求如果出现乱码
request. setCharacterEncoding(“utf-8”) ;
7.Response响应对象:
response提供的方法:
void addCookie( Cookie cookie );服务端向客户端增加cookie对象
void sendRedirect(String location ) throws IOException;:页面跳转的一种方法
void setContetType(String type):设置服务端响应的编码(设置服务端的contentType类型)
request提供的一种页面跳转方式:
请求转发:
request.getRequestDispatcher().forward(request,response);
|地址栏是否改变 是否保留第一次请求时的数据 请求的次数
|请求转发 不变(check.jsp) 保留 1
|重定向 改变(success.jsp) 不保留 2
8.Cookie与Session:
服务端准备Cookie:
response.addCookie(Cookie cookie)
页面跳转(转发,重定向)
客户端获取cookie: request.getCookies() ;
javax. servlet.http.Cookie
public Cookie (String name,String value)
String getName ():获取name
String getValue():获取value
void setMaxAge(int expiry);最大有效期(秒)
a.服务端增加cookie :response对象;客户端获取对象:request对象
b.不能直接获取某一个单独对象,只能一次性将全部的cookie拿到
通过F12可以发现除了自己设置的Cookie对象外,还有一个name为JSESSIONID的cookie
session机制:
客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的信息);并且每个session对象都会有一个唯一的 sessionId(用于区分其他session);
服务端由会产生一个cookie,并且该cookie的name=JSESSIONID , value=服务端sessionId的值。然后服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端就有了一个cookie (JSESSIONID)。因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONIDsessionID)
客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID
去服务端的session中匹配sessionid。
session :
a. session存储在服务端
b. session是在同一个用户(客户)请求时共享
c.实现机制:第一次客户请求时产生一个sessionid并复制给cookie的jsessionid然后发给客户端。最终通过session的sessionid与jsessionid实现一一对应关系
session方法:
String getId():获取sessionId
boolean isNew ():判断是否是新用户(第一次访问)
void invalidate()∶使session失效
setAttribute();
getAttribute();
removeAttribute();
void setMaxInactiveInterval(秒):设置最大有效非活动时间
int getMaxInactiveInterval():获取最大有效非活动时间
!!request:同一次请求有效!
!!session:同一次会话共享
cookie和session的区别:
session cookie
保存的位置 服务端 客户端
安全性 较安全 较不安全
保存的内容 object String
9.appliation全局对象
String getContextPath()虚拟路径
String getRealPath(String name):绝对路径(虚拟路径相对的绝对路径)
四种范围对象(小->大)
pageContextJSP页面容器(page对象)当前页面有效
request请求对象 同一次请求有效
session会话对象 同一次会话有效
appliation全局对象 全局有效(整个项目有效)
以上4个对象共有的方法:
0bject getAttribute(String name):根据属性名,或者属性值
void setAttribute(String name,0bject obj):设置属性值(新增,修改)
setAttribute("a","b") ;//如果a对象之前不存在,则新建一个a对象 ﹔如果a之前已经存在,则将a的值改为b
void removeAttribute (String name):根据属性名,删除对象
a.
pageContext当前页面有效(页面跳转后无效)
b.
request同一次请求有效;其他请求无效(请求转发后有效;重定向后无效)
c.
session同一次会话有效(无论怎么跳转,都有效,关闭/切换浏览器后无效)
d.
application 全局变量;整个项目运行期间都有效(切换浏览器仍然有效)
->多个项目共享、重启后仍然有效:JNDI
1.以上的4个范围对象,通过 setAttribute()复制,通过getAttribute()取值;
2.以上范围对象,尽量使用最小的范围。因为对象的范围越大,造成的性能损耗越大。l