1、jsp有那些内置对象:
jSp 九大内置对象:
* 不常用的内置对象:
pageContext :页面内容对象,也叫页面的全局对象
config :配置文件对象 学习到servlet的时候会学到,详细讲。
page :页面对象。很少用。
Exception :集中处理异常的一个类,将来我们会把很多可能出现异常的代码写这里面。
* 常用的内置对象:
out
print和println方法,本质上就是把任意数据类型,转换成String类型,进行输出。
out.print();
out.println();
toString();
<br>
print和println方法,都可以输出任意数据类型。
write、方法,本质上就是把任意数据类型,转换成char字符类型,进行输出。
out.write();
write、方法,仅可以输出int,String ,char char[],有这几个重载的方法。
通过查看api发现,out.write()方法输出int类型数据的时候,会出现乱码
write()方法本身是输出流,
write() 方法的所有字符,则立即将它们写入预期目标。然后,
如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush()
调用将刷新
所有的内容会当成字符处理, int类型 对应ASCII码表进行转义成对应的字符了。
Writer 和 OutputStream 链中的所有缓冲区。
HASHCode 底层依赖于 ASCII码表,ASCII是计算机的字符对应表。123 ——>对应字符 {
+
2、request: 请求对象
1、如何查看浏览器请求信息
浏览器查看工具:httpWatch 网页查看工具。shift + F2 或者 工具——>httpWatch
通过httpwatch工具,可以看到当我们访问一个网页的时候,请求带有很多的数据信息。
request作为内置对象,可以获取到这些信息。
所有浏览器,也有内置的httpWatch ,可以按F12 呼出来。
2、request内置对象的方法
String getParameter(name); 获取参数值(通过参数名)
String[] getParameterValues(); 获取参数名对应的多个值
setCharacterEncoding(); 设置请求编码格式,UTF-8,post方式请求的时候设置
getRequestDispatcher(); 返回一个RequestDispatcher对象,
该对象的forward( )方法用于转发请求
3、request请求方式分两种:
1、get方式 :把所有要传输的信息,都通过url 链接携带。有长度限制。不安全。
http://localhost/day03/reginfo.jsp?name=amin&psw=123&
channel=%E7%BD%91%E7%BB%9C&channel=%E7%94%B5%E8%A7%86
2、post方式 : 通过request对象,内部进行传输。用户看不到,相对来说安全。
数据包的形式进行传递。
4、request对象,post方式进行请求页面。
* 乱码出现原因:中文导致
request.setCharacterEncoding("UTF-8");
post方式携带的数据。传递给另一个页面接收到这些信息进行展示发现,
乱码!!!
* 分析
jsp页面是否有乱码,页面设置编码的两种方式如下:
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
这两个都可以设置页面编码方式,设置其中一个,另一个编码方式默认相同。
浏览器渲染是否有乱码
浏览器本身也没有问题,都是支持中文。
服务器接收信息是否造成乱码!
1、post请求方式,产生的乱码问题解决方案
通过reqeust对象设置
request.setCharacterEncoding("UTF-8");
2、get方式请求,产生乱码问题解决方案
发现:
get方式请求,用request的setCharacterEncoding("UTF-8")方法无法解决中文乱码问题。
解决方案:
1、可以在接收信息页面,通过将接收到的数据,改变编码方式来操作。
当我们请求页面register的请求方式是get的时候,接收到的数据改变,编码用如下方式。
String newName = new String(name.getBytes("ISO-8859-1"),"utf-8");
2、修改服务器tomcat中server.xml中的URI编码格式来设置。
打开tomcat的安装目录——> conf ——> server.xml(记事本打开)
——> 找到Connecter标签 ——>
在里面设置如下:
添加一条属性:
URIEncoding = "UTF-8"
(完美解决get方式请求,获取到的数据解析出现乱码问题。)
response 响应 服务器响应客户端。 针对服务器来说
概念:
当我们客户端向服务发起请求数据后,
服务把对应页面及数据返回的 过程就叫响应
response有一个方法,重定向
sendRedirect()
服务器接收到了请求,然后把请求返回给客户端,让客户端重新请求别的页面。
重新确定了方向,叫重定向。客户端重新请求,(请求两次)
类似快递寄错地方了,返回来,重新寄出去。
弊端:
重定向之后的页面,无法获取到之前的请求携带的数据。
请求了两次,第二次不携带数据。
怎么解决这个问题 : session对象来解决。
request有一个方法,叫转发
getRequestDispatcher();
服务器接收到了请求,然后把这个请求拿到,换一个页面返回给客户端。
转发,服务器来完成转发任务。(请求。)
类似快递帮你转寄。
RequestDispatcher request.getRequestDispatcher(要请求的页面); 这个方法,可以获取一个转发对象。
转发对象,有个方法: forward(request,response)。
参数里面要写request对象,和response对象。进行转发跳转。
练习:
请求一次
http://localhost/day032/result.jsp?name=sa&psw=sa
常见状态码
1 开头的状态码: 请求失败,由客户端产生问题,例如,断网。
2 请求成功相关
3 重定向,请求被转移等。
4 服务器没有找到你要的资源文件,无法访问。
5 服务器发生故障,可能断网,网关卡死等问题。
------------------------------------------------
200 访问成功、
404 未找到页面或者访问的文件资源
407 页面被重定向
500 服务器无响应
session 服务器的会话机制。
每次我们访问服务器的时候,服务器就会给我们创建一个session对象。
服务器和浏览器之间对话的媒介。我们经常用它来携带数据。
1、每个浏览器,独占一个session对象。
不同的浏览器,有不同的session对象。
session.getId();
通过演示“:
session 同一个浏览器,不同标签页,不同窗口都显示相同session对象的id
不同浏览器,显示的session的id是 不同的,即,session不同。
2、session 是有有效时间,过了有效时间就失效。
//通过下面方法设置,最大的有效时间,也就是过了这个时间就失效。
//参数是,设置 秒值。
session.setMaxInactiveInterval(10);
//获取session对象,最大的有效时间。
int session.getMaxInactiveInterval();
//让我们的session对象,立刻失效。
session.invalidate();
3、session 可以携带数据。进行数据交互。
// 设置参数。key value
void setAttrbuite(key,value);
// 获取session携带的 对应参数名的值。
value getAttrbuite(key);
//移除所有,带参数,就是移除制定参数名的值。
removeAttrbuite(key);
4、session对象的销毁。
(1)、通过代码设置,销毁时间。
设置一个销毁时间,
session.setMaxInactiveInterval(10);
立刻销毁。
session.invalidate();
(2)项目设置session失效时间。web.xml
<session-config>
<session-timeout>10</session-timeout>
</session-config>
(3)服务器tomcat设置session失效时间。web.xml
<session-config>
<session-timeout>30</session-timeout>
</session-config>