您的位置:首页 > Web前端 > JavaScript

JSP 9大对象

2015-08-03 17:50 501 查看

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 对象(客户响应对象)

重定向:respose.sendRedirect(String Path);
设置输出缓存,

缓存去的内容在一下三种情况下会写入到客户端

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 对象的方法

1.创建及获取对象
session.setAttribute(String name,Object obj);
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中的Session与Cookie

在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 加密,也是很容易被截获的。<引用自百度>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: