文章目录
- 1 页面元素
- 2 内置对象
- 2.1 request:请求对象;存储客户端向服务端发送的请求信息
- 2.1.1 request常见的方法
- 2.1.1.1 String getParameter(String name) :根据请求的字段名key,返回字段值value
- 2.1.1.2 String [ ] getParameterValues(String name) :根据请求的字段名key,返回多个字段值 value (checkbox)
- 2.1.1.3 void setCharacterEncoding("编码格式uef-8") :设置post请求编码(tomcat7 以前默认iso-8859-1,tomcat 8以后改为了urf-8)
- 2.1.1.4 getRequestDispatcher("b.jsp").forward(request,response); :请求转发的方式进行跳转
- 2.1.1.5 getServerContext():获取项目的ServletContext对象
- 2.1.1.6==示例:注册==
- 2.1.2 get与post提交方法
- 2.2 response
- 2.3 session
- 2.4 application
- 2.5 out 输出对象,向客户端输出内容。
- 2.6 pageContext
- 2.7 config 配置对象(服务器配置信息)
- 2.8 page 当前jsp页面对象(相当于java中的this)
- 2.9 exception 异常对象
- 3 四个范围内置对象
1 页面元素
1.1页面元素一 脚本 Scriptlet 及脚本的三种形式
1.1.1 <% %>
<% 定义局部变量,java语句 %>
注意,在此处的java语句println与print的效果是一样的,不会换行,要想换行需要加<br/>
1.1.2 <%! %>
<%! 定义全局变量,定义方法 %>
1.1.3 <%= %>
<%=输出表达式 %>
注 表达式不加分号
以上形式可以直接解析html语句。
一般而言,修改web.xml,配置文件,java需要重启tomcat,但是如果修改Jsp/html/css/js,不需要重启。
图一
图二
1.2页面元素二 指令
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
page指令 page指定的属性:
- 1 language jsp页面使用的脚本语言
- 2 import 导入类
- 3 pageEncoding:jsp文件自身编码 jsp转成java时用的编码
- 4 contentType : 浏览器解析jsp
1.3页面元素三 注释
- html 注释
<!-- -->
- java注释 // /* */
- jsp注释<%-- --%>
2 内置对象
2.1 request:请求对象;存储客户端向服务端发送的请求信息
2.1.1 request常见的方法
2.1.1.1 String getParameter(String name) :根据请求的字段名key,返回字段值value
2.1.1.2 String [ ] getParameterValues(String name) :根据请求的字段名key,返回多个字段值 value (checkbox)
2.1.1.3 void setCharacterEncoding(“编码格式uef-8”) :设置post请求编码(tomcat7 以前默认iso-8859-1,tomcat 8以后改为了urf-8)
2.1.1.4 getRequestDispatcher(“b.jsp”).forward(request,response); :请求转发的方式进行跳转
2.1.1.5 getServerContext():获取项目的ServletContext对象
2.1.1.6示例:注册
register.jsp —> show.jsp
图一
图二
2.1.2 get与post提交方法
2.1.2.1 get提交方式
默认的提交方式是get方式,
- 表单提交 (默认的method=“get”)
- 超链接(
<a href="xx">
) - 地址栏 http://localhost:8780/MyjspProject/show.jsp?uname=zs&uage=123&upwd=23&uhobbies=足球&uhobbies=篮球&uhobbies=乒乓球
连接/文件? 参数名1=参数值1 & 参数名2=参数值2
get方式有风险不安全。
2.1.2.2 get与post提交方式的区别
- a.get方式在地址栏显示,请求信息(地址栏能够容纳的信息有限,4-5KB,如果请求数据存在大文件,图片等,会出现地址栏无法容纳全部数据而出错。)
- b 文件上传操作,必须是post
2.1.2.3 统一请求的编码 request
- get方式请求 如果出现问题有两种解决办法
a.统一每一个变量的编码(不推荐)
new String(旧编码,新编码)
name=new String(name.getBytes(“iso-8859-1”))
b.修改server.xml中统一get方式的编码URIEncoding=“UTF-8”
tomcat7(iso-8859-1)
tomcat8(utf-8) - post方式请求,如果出现问题用以下解决办法
request.setCharacterEncoding(“utf-8”);
图三
图四
图五
图六1/2
图六2/2
图七
2.2 response
2.2.1 response常见的方法
2.2.1.1 void addCookie(Cookie cookie);服务端向客户端增加cookie对象
2.2.1.2 void sendRedirect(String location) throws IOException;页面跳转的一种方法(重定向)
2.2.1.3 void setContetType(String type):设置服务端响应的编码(设置服务端的contentType类型)
2.2.1.4 示例:登录
login.jsp—>check.jsp
图八
图九
图十 请求转发与重定向原理图
图十一 请求转发与重定向的对比图
2.3 session
2.3.1 在学session之前先学Cookie
2.3.1.1 session与Cookie的区别
session(存在于服务端)
Cookie(存在于客户端,不是内置对象):Cookie是由服务端产生的,发送到客户端保存。
2.3.1.2.Cookie就是本地缓存
相当于本地缓存的作用:客户端(hello.mp3)——>服务端(hello.mp3)
2.3.1.3. Cookie的作用:提高访问服务端的效率,但是安全性较差
2.3.1.4. Cookie内部细节
2.3.1.4.1 Cookie : key=value
2.3.1.4.2 产生Cookie对象的类:javax.servlet.http.Cookie
2.3.1.4.3 常用方法:
public Cookie (String name,String value);构造方法
String getName() :获取name
String getValue() ;获取value
void setMaxAge(int expiry) :最大有效期(秒)
2.3.1.4.4 一个Cookie的流程
前提:cookie 不是内置对象,要使用必须手动new.但是,服务端会自动new一个且仅new一个name=jsessionid的cookie,返回给客户端。
a 服务端准备Cookie给客户端
response.addCookie(Cookie cookie)
b 页面跳转(转发,重定向)
c 客户端获取cookie:request.getCookies();
注意点:1 服务端增加cookie用response对象;客户端获取request对象
2 不能直接获取某一个单独对象,只能一次性将全部cookie拿到,再去遍历获取
图十二
图十三
2.3.1.5 案例实现
2.3.2 学session
2.3.2.1 session的定义 就是会话
浏览网站:开始-关闭,
购物:浏览。付款,退出
电子邮件:浏览,写邮件,退出等都是一个session会话
总的来说就是一次开始到一次结束就是一个session
2.3.2.1 session的机制
2.3.2.3 session的总结
a.session存储在服务端
b.session是在同一个用户(客户)请求时共享
c.实现机制:第一次客户请求时,产生一个sessionid并复制给cookie的jsessionid然后发给客户端。最终通过sessionid----jsessionid实现一一对应的关系
2.3.2.3 session的方法
1 String getId():获取sessionid
2 boolean isNew():判断是否是新用户(第一次访问)
3.void invalidate();使session失效(退出登录,注销)
4 setAtrtribute() getAttribute()
5 void setMaxInctiveInterval(秒):设置最大有效非活动时间 int getMaxInctiveInterval:获取最大有效时间
2.4 application
2.4.1application全局对象的方法
1 String getContextPath() 虚拟路径
2 String getRealPath( ):虚拟路径对应的绝对路径
2.5 out 输出对象,向客户端输出内容。
2.6 pageContext
2.7 config 配置对象(服务器配置信息)
2.8 page 当前jsp页面对象(相当于java中的this)
2.9 exception 异常对象
3 四个范围内置对象
3.1 范围从小到大排序
1 Object getAttribute(String name):根据属性明明,获取属性值
2 void setAttribute(String name,Object obj):设置属性值(新增,修改)
setAttribute(“a”,“b”);//如果a对象之前不存在,则新建一个a对象,如果已经存在,则将a改成b
3 void removeAttrinute(String name):根据属性名,删除对象
1 pageContext JSP页面容器 (有的书里面会说是page对象,要注意不要搞晕了)
当前页面有效(页面跳转后无效)
2 request 请求对象
同一次请求有效:其他请求无效(请求转发后有效,重定向后无效)
3 session 会话对象
同一次会话有效(无论怎么跳转都有效,从登陆到退出之间都有效;关闭切换浏览器后无效)
4 appliation 全局对象
整个项目运行期间都有效(切换浏览器任然有效,关闭服务,其他项目无效)
多个项目共享,重启后仍然有效:JNDI