过年期间对自己要求有点放松了,好几天没看视频了,今天开始照常!
Application对象:属于javax.servlet.ServletContext,其作用是保存公共信息。
- 属性操作的三个方法:setAttribute(),getAttribute(),removeAttribute()
- 得到工作目录的真实路径的方法:Public String getRealPath(String path)此方法需要一个参数“/”
- Application是整个服务器中保持的只有一个实例的对象
- 在实际开发中经常使用getServletContext()去代替Application
out对象:
- out对象主要用于动态的向客户端输出数据
- 在JSP开发中要尽量少使用此对象
- 开发中的原则:
- HTML代码与JAVA代码分离,如果要输出,尽量使用表达式输出(<%=%>),要用(<%=%>)完全代替(<%Out.print();%>)
JSP安全性及Config对象的应用:
- JSP安全性:
- 在J2EE中安全性的体现:工作目录的WEB-INF文件夹
- 将页面放置到WEB-INF文件夹中下则页面无法被发现,提高了安全性,欲访问WEB-INF文件夹下的文件可以通过修改WEB.XML文件
- web.xml文件:属于整个WEB站点的配置文件
- 在web.xml文件中添加下列代码:
<servlet>
//在web.xml文件内部起作用与servlet-mapping关联
<servlet-name>test</servlet-name>
//找到jsp文件的路径,此路径一般保存在WEB-INF之中
<jsp-file>/WEB-INF/demo.jsp</jsp-file>
</servlet>
<servlet-mapping>
//在web.xml文件内部起作用与servlet-name完全一致
<servlet-name>test</servlet-name>
//网页上输入的实际路径地址
<url-pattern>/demo</url-pattern>
</servlet-mapping>
- 当此文件被修改之后必须重新启动服务器–因为服务器在启动时会读取此文件
- Config对象:属于javax.servlet.ServletConfig
- 要使用config对象的前提:JSP页面必须在web.xml中进行配置
- 在<servlet>与</servlet>中添加下列代码:<init-param>
<param-name>参数名</param-name>
<param-value>参数值</param-value>
</init-param>
- <init-param></init-param> 可添加多个
- 如果要取得这些初始化参数,必须通过映射名称进行访问jsp页面,才可以取得初始化参数,通过config对象来取得
- 取得初始化参数的方法:public String getInitParameter(String name),通过这中功能可以将数据库连接的一些信息写在配置文件之中
- 常用的方法还有:public Enumeration getInitParameterNames()取得全部配置参数
alex Java application, config, Java, jsp, 安全性, 语法
session对象:
- session对象主要用于保存用户的各种信息,知道它的生命周期(一般是900S)超时或者被人为释放为止
- 可以通过session对象来判断此用户是否是合法用户
- 在服务器上通过session来区分每一个上网用户
- session对象属于javax.servlet.http.HttpSession接口的实例化对象
- session属于HTTP协议范畴之内的对象,所以只有唯一的一个http包下有此接口,没有任何继承关系
- 用户只要一连接服务器则立刻分配一个session给用户
session的主要方法:
- 服务器上通过session来分别不同的用户–>sessionID:任何连接到服务器上的用户,服务器都会为之分配唯一一个不会重复的sessionID
- sessionID是由服务器同意管理的,人为不能控制
- 方法:session.getId()
- sessionID的长度为32位
- 判断是不是新的session
- Public boolean isNew(),判断当前的session是否是新建立的session
- session的属性设置
- 设置属性setAttribute()
- 取得属性getAttribute()
- 删除属性removeAttribute()
- 通过session能够对用户是否登陆做出验证
- ★用户注销:让用户的session失效
- 若用户的session失效,则在session所保留的全部操作也会消失
- 方法:Public Void invalidate()使session失效(需手工操作)
- 若session长时间不被使用,也会自动失效
- 得到session的创建时间
- 方法:Public long getCreationTime(),此方法返回一个long类型,通过Date类可以取得一个完整的时间
- 取得用户最后一次操作的时间
- 方法:Public long getLastAccessedTime()
- 用户在线时间=session最后一次操作时间-session创建时间
session与Cookie区别:
- session将信息保存在服务器上而Cookie保存在客户端上
- session比Cookie更安全,session比Cookie更占资源
- 开发原则:
- sessiom要尽量少使用–尽量少向session中保存信息
- session使用Cookie机制,若Cookie被禁用,则session也无法使用
alex Java cookie, Java, jsp, session
response对象:服务器端回应客户端的请求
- 所属接口:javax.servlet.http.HttpServletResponse,其父接口是ServletResponse,而且ServletResponse也现在只有唯一一个HttpServletResponse子接口,主要原因是,现在的J2EE的WEB程序主要以HTTP协议为主要通讯协议。
response对象的功能:
- 设置头信息:response.setHeader("头信息内容","头信息参数");
- 常用的刷新refresh,例如:response.setHeader("refresh","1");
- 几秒后跳转:response.setHeader("refresh","2:URL=XXX");
- 重定向–response跳转:response.sendRedirect("跳转地址");
- 此语句执行后,页面地址也变为跳转后的地址
- 面试中常见问题:两种跳转的区别:
- <jsp:forward page="xxx" />:
- 地址栏不改变–属于服务器端跳转
- 执行到跳转语句后无条件立刻跳转–之后的代码将不再执行
- 注意:若使用forward跳转则一定要在跳转前释放掉全部资源;
- 使用forward时,request设置的属性(setAttribute)依然能保留到下一个页面
- 通过<jsp:Param name="" value="" />传递参数
- response.sendRedirect("跳转地址"):
- 地址栏改变–属于客户端跳转
- 页面的所有代码执行完毕之后再跳转
- 不能保存request属性,地址栏改变了,客户端跳转
- 通过对URL地址的重写传递参数
- 设置Cookie
- Cookie是服务器端保存在客户端的一组资源
- 通过Cookie实现保存密码或者多长时间无需再输入密码等功能
- 设置Cookie的方法:Public Void addCookie(Cookie cookie)
- Cookie是通过服务器端设置到客户端上去的–response
- 如果要在服务器端取得Cookie–request
- 在request对象中有Public Cookie[] getCookies()方法
- 在使用request对象取得全部Cookie时会出现JSESSIONID,表示唯一的客户端在服务器上的编号,这个值在客户端第一次访问服务器端之后设置
- 默认情况下Cookie只针对当前浏览器有效,如果需要长留在计算机上,可以设置Cookie的保存时间,通过设置Cookie最大保留时间方法:setMaxAge()
alex Java cookie, Java, jsp, response, 跳转
request对象其实是服务器端接受客户端请求的信息的,在接受信息之后做进一步处理
常用方法:getParameter(),getParameterValues(),getParameterNames()
在接受参数之后若页面中包含中文则会出现乱码,之所以会出现这样根本原因就是此文字不在正常的编码范围之中,解决方法有:
- 对所有的数据进行在编码:ISO8859-1编码
- String类中的getBytes("ISO8859-1");
- getBytes()方法的定义:Public byte[] getBytes("encoding")再将byte数组重新变为字符串。e.g.String name=new String(request.getParameter("uname").getBytes("ISO8859-1"));
- 设置同意的字符编码
- Public void setCharacterEncoding(String env)
在J2EE中,最大的问题是乱码问题–要做到国际通用
若传递的内容是数组(复选框的情况下、多个下拉列表项)使用request的一下方法取得数据:
- Public String[] getParameterValues(String name)
隐藏域是开发中较为常用的表单控件,其作用是将内容隐藏起来,使用户不能修改,之后随表单一起提交到服务器上显示。
地址重写:
- 通过地址重写,可以将内容传递到服务器端–服务器端只认HTTP协议而不管接受的内容是以何种形式传递过来的,若有多个参数用&连接
★getParameterNames主要用来接受参数名称
- Public Enumeration getParameterNames()
取得客户端IP地址的方法:Public String getRemoteAddr()
★★总结:
- 只要是客户端的信息,在服务器端都可以通过request对象取得
- 只需要注意中文乱码问题即可
- 必须掌握的方法getParameter(),getParameterValues(),setCharacterEncoding()
alex Java Java, jsp, request, 乱码
Java中的对象必须先实例化再用:分配内存空间
在JSP中,由WEB容器对对象进行实例化
常见对象及作用域:
| 对象名 |
类型 |
作用域 |
| request |
javax.servlet.ServletRequest的子类 |
Request |
| response |
javax.servlet.ServletResponse的子类 |
Page |
| pageContext |
javax.servlet.jsp.PageContext |
Page |
| session |
javax.servlet.http.HttpSession |
Session |
| application |
javax.servlet.ServletContext |
Application |
| out |
javax.servlet.jsp.JspWriter |
Page |
| config |
javax.servlet.ServletConfig |
Page |
| page |
java.lang.Object |
Page |
| exception |
java.lang.Throwable |
Page |
!!最重要的概念:四种属性的保存范围
- 设置属性:Public abstract Void setAttribute(java.lang.String name,java.lang.Object attribute) ★★属性名称为字符串、属性值可以为任意对象
- 取得属性:Public abstract Void setAttribute(java.lang.String name)
四种属性保存范围:
- 在一个页面范围内 :page
- 在一次服务器请求范围内:request
- 在一次会话范围内:session
- 在一个应用服务器范围内:application
page范围:
- 在jsp中设置一个页的属性范围必须通过pageContext完成
- pageContext属性范围是最为重要的JSP属性之一,但是如果使用纯粹的JSP代码开发,则此属性显示不出用处
request范围★:
- 将属性保存在一次请求范围内的前提是,必须使用服务器端跳转<jsp:forward />
- 应用点:MVC设计模式、Struts、Webwork
session范围:
- 只保留一个用户的信息
- 只要设置了属性,则不管是什么跳转都可以取得属性
- 与session有关的任何打开页面都可以取得session
- ★session的主要功能:用于验证用户是否登陆
application范围:
- 只要设置一次则所有的网页窗口都可以取得数据
- 如果要释放application资源只能重新启动服务器
application、session、request都需要跨多个页
保持性能不降低的原则:若能用request就不不要使用session,能使用session就不要使用application
★★重要概念:
- pageContext默认情况下表示一个页面的保存范围
- 另一种设置属性的方法Public abstract Void setAttribute(java.lang.String name,java.lang.Object attribute,int scope)
- scope可以取:Public Static final int APPLICATION_SCOPE、Public Static final int SESSION_SCOPE、Public Static final int REQUEST_SCOPE、Public Static final int PAGE_SCOPE
- ★★总结:四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session、request范围最多。
- 四种属性范围是整个J2EE WEB端开发必须深刻记住的概念,包括设置属性和取得属性的参数类型,返回值类型。
alex Java Java, jsp, 对象, 属性, 范围
最新评论