jsp 中有内置的9种对象,
1.request 对象(页面请求对象)
用法1,在超链接后面通过?加上参数,参数间用&隔开
对于jsp页面,要加上 .jsp,对于跳转到servlet ,直接用 路径+文件名
参数获取的方法是request.getParameter("参数名");同样的方式可以获取表单中的信息,对于复选框,可以用一个字符串存储使用request.getParameterValues();
解决中文乱码
2种方式
1.在获取传递过来的参数中文乱码的时候,
可以用new String(request.getParameter("user").getByte("iso-8859-1"),"GBK"); 获得字符串(重新用字节码构造了中文字符)
2.还可以用request 的设置字符编码的方法解决中文乱码.
request.setCharacterEncoding("UTF-8"); //对post提交有效
3.模拟http的响应头部
request 获取客户端信息的各种方法
{
getHeader(String name) String 返回制定名称的HTTP头信息
getMethod() String 获取客户端向服务器发送请求的方法
getContexPath() String 返回请求路径
getProtovol() String 返回请求使用的协议
getRemoteAddr() String 返回客户端使用的IP地址
getRemoteHost() String 返回客户端的主机名
getRemotePort() int 返回客户端发出请求的端口号
getServletPath() Stirng 返回接受客户提交信息的页面
getRequestURI() String 返回不包括参数的客户的请求发地址
getRequestURL() StringBUffer返回客户端请求的地址
}
request 对象的作用域的属性的管理
通过request.方法,进行操作通过setAttribute("name",value); 设置属性,
通过getAttribute("name"); 获取属性
通过removeAttribute("name") ; 移除属性
注意作用周期
request中的cookie进行操作
cookie简介: 中文译名小甜饼的意思,但在程序中确实小段的文本信息,可能是因为大小相似,但又很好用吧
来源: 它在网络的服务器上面生成,被发送给浏览器.
作用是: 通过cookie可以标识用户身份,记录用户的登录的密码跟踪重复用户等
存储的方式: 浏览器是以键值对的形式存储,即key/value 存储在客户机的某个指定的目录.
关于它的方法集合:
{
getCookies(); 获取所有的cookie 对象
cookie对象.getName();获取这个cookie的名字
getValue(); 获取对象的值
在response.addCookie() ;可以添加cookie
}
**
可以实现自动登录的功能
对信息,可以用split("#")分割开,(原因是在封装cookie 的时候是用#号链接起来的)
国际化信息
浏览器通过accept-language 的 HTTP报头向服务器指明它所使用的本地语言.
此时我们就可以用request对象的getLocale()或getLocales() 的方法获取这一信息 ,信息的类型为java.util.Local类型的
java.util.Local类型的对象封装了一个国家和其对应的语言,这样我们就可以对不同国家的用户作出相应的处理
** 程序的段代码if(request.getLocale().equals(java.util.Locale.US)){you can do something whta you want to do !}
2.response 对象(客户响应对象)
设置输出缓存,
缓存去的内容在一下三种情况下会写入到客户端
1.jsp页面的信息已经全部写入到缓存区.
2.缓存区满了
3.强制清空(刷新)缓存,如response的flushBuffer()方法或out对象的flush()方法;
还有其他的几种对缓存区的操作:
1.getBufferSize(); 获取缓存区的实际大小;
2.setBufferSize(int size);设置缓存区的大小
3.reset(); 重置缓存区,将缓存区的内容清除,同同时清除状态码,和报头
4.isCommitted(); 检测服务器是否已经将数据写入到客户端
处理http文件头
1.设置响应的内容的类型,setContentType(String type);
** 2.禁用缓存,对于安全性较高的网站,设置禁用缓存,可以防止浏览器缓存页面,更加安全.
例如:<%
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>
3.设置页面的自动刷新 response.setHeader("refresh","10");
** 4.设置定时跳转网页 response.setHeader("refresh","5;URL=login.jsp"); 此项内容可以用于"还有5秒跳转到登录页面"的信息,关于秒数自动减少的可以用javascript 实现 此项需实现
3.session 对象(会话对象)
常用的几种关于session 对象的方法
session.getAttribute(String name); 返回类型为Object
2. 移除对象 session.removeAttribute(String key);
3.设置有效时间 session.setMaxInactiveInterval(int interval);
4.其他 session.getCreateTime();
session.getLastAccessedTime();
getId();(获取唯一的编号)
session.isNew(); 判断是否是新创建的
5.销毁 session,invalidate();
http://justsee.iteye.com/blog/1570652
Session机制详解
4.还有其他的对象 application out page 等 还有exception 对象
通过pageContext 可以获得上述对象
本章应用:
session 会话超时提示 用户状态 提示:如果未登录,则进行页面的转发<jsp:forward page="login.jsp"/> 类似用法,<jsp:include page="down.jsp"/>被包含或转发的不仅仅是jsp 页面.还可以是其他servle t等
通过cookie 自动登录,
统计在当前页面停留的时间,
可以用此判断用户的身份,进而看是否已经登录.
通过回复添加一个名字为user 的属性 ,在客户端判断,是否有属性名字为user 的,如果没有,则给出请登录的提示,
如果有,则把它的值取出来,然后根据里面的信息获取用户的昵称,进而输出到页面.,这个判断是在页面载入的时候的判断
在PHP开发中对比起Cookie,session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 session 的使用。
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。
对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能只做一次验证。为什么呢?因为客户端Cookie 中的信息是有可能被修改的。假如你存储 $admin变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。
而 Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改 session 文件的内容,因此我们可以单纯存储一个 $admin变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。<引用自百度>