× Web程序的请求相应模式(请求[request]、响应[response])
× form method="get"和method="post"提交方式的区别
1.get:以明文形式通过url进行参数的传递,数据能在url获取,提交的数据最多不超过2KB,安全性低但效率比post高。
适用于提交数据量不大,安全性不高的数据。eg:搜索、查询等
2.post:将用户提交的信息封装在HTML HEAD内。
适用提交数据量大,安全性高的用户信息。eg:注册、修改、上传
×请求转发与请求重定向的区别
操作名 | 行为 | 方法 | 描述 |
请求重定向 | 客户端行为 | response.sendRedirect("url path"); | 相当于两次请求,前一次的请求对象不会被保存,且url地址会发生变化 |
请求转发 | 服务端行为 | request.getRequestDispatcher("urlpath").forward(request,response); | 一次请求,转发后请求对象会被保存,地址栏不会变化 |
通俗易懂点讲:
重定向:这事不归我管,你自己走去XXX弄 (客户端行为)
转发:这事不归我管,但我能帮你转交给XXX(服务端行为)
九大内置对象(out、request、response、session、application、page、pageContext、exception)
1.out对象(JspWriter类的实例,向客户端[浏览器]输出内容常用的对象)
常用方法:
- void println(); 向客户端打印字符串。
- void clear(); 清除缓存区的内容,如果在flush之后调用会抛出异常。
- void clearBuffer(); 清除缓冲区的内容,如果在flush之后调用不会抛出异常。
- void flush(); 将缓冲区内容输出到客户端。
- int getBufferSize(); 返回缓冲区以字节数的大小,若不设缓冲区则为0。
- int getRemaining() 返回缓冲区剩余可用空间大小。
- boolean isAutoFlush(); 当缓冲区满时,是否自动清空,若否,则抛出异常。
- void close(); 关闭输出流。
2.request对象 |—1.HttpServletRequest的实例对象;
|—2.客户端的请求信息被封装到该对象中,通过该对象获取信息,并且做出响应;
|—3.该对象具有请求域,即在完成用户请求之前,该对象一直有效;
常用方法:
- String getParameter(String param); 返回指定参数param的参数值。
- String[] getParameterValues(String param); 返回包含参数param的所有参数值的数组。
- void setAttribute(String param,Object obj); 将obj对象以param指明保存到request对象中。
- Object getAttribute(String param); 返回指定参数名的属性值。
- String getContextType(); 得到请求体的MIME类型
- String getProtocol(); 返回请求体的协议类型以及版本号
- String getServerName(); 返回接收请求体的服务器主机名
- int getServerPort(); 返回接收请求体的服务器的端口号
- String getCharacterEncoding(); 返回字符集编码
- void setCharacterEncoding(); 设置字符集编码
- int getContentLength(); 以字节数返回请求体的长度
- String getRemoteAddr(); 返回发送该请求的客户端IP地址
- String getRealAddr(); 返回虚拟路径的真实地址
- String getContextPath(); 返回上下文路径(项目名)
3.response对象 |—1.HttpServletResponse的实例对象;
|—2.response对象包含了响应客户端请求的有关信息,但在JSP中很少直接使用它;
|—3.该对象具有请求域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效;
常用方法:
- String getCharacterEncoding(); 返回响应使用的字符编码
- void setContentType(String type); 设置响应的MIME类型
- PrintWriter getWriter(); 返回可以向客户端输出字符的一个对象
(注意:PrintWriter与内置对象out的区别) - sendRedirect(java.lang.String location); 重定向,重新定向客户端请求。
4.session对象 |—1.HttpSession的实例(表示客户端与服务器的一次会话);
|—2.session是指用户浏览网站时,从进入网站开始便会产生session,直到浏览器关闭时,session也便随之销毁;
|—3.session实际上是一个特定的时间观念;
常用方法:
- long getCreationTime(); 返回session创建时的时间(单位 毫秒)
- String getId(); 返回session的ID(ID为JSP引擎设置)
- Object setAttribute(String name,Object obj); 使用指定名称将对象捆绑在此次会话中(设置自定义属性[name]、属性值[obj])
- Object getAttribute(String name); 返回此次会话中指定属性名的属性值,若不存在,返回null
- String[] getValueNames(); 返回一个包含此session中所有可用属性的数组
- int getMaxInactiveInterval; 返回该session的最大期限[单位 秒](若两次请求间隔超过期限时间,则该session将被销毁)
- voidsetMaxInactiveInterval(int second);设置session的最大期限[单位 秒]
× session的生命周期
『 1. 创建 - 当浏览器登录页面时便创建session
2. 活动
3. 销毁 - 方式一:session.invalidate();
- 方式二:session超出最大期限 --- Tomcat默认期限为30分钟
设置最大期限:
1) 调用方法[setMaxInactiveInterval]
2) 在web.xml配置 [ 单位 分钟]
<session-config>
<session-timeout>10</session-timeout>
</session-config>
- 方式三:服务器重启
注意:当关闭该session相关的所有页面时,再次打开页面将会创建新的session』
5.Application对象 |—1.ServletContext的实例(实现用户间数据的共享,可存放全局变量);
(说白了就是游走于整个web应用的对象撒~)
|—2.application对象随着服务器的启动而产生,随着服务器的关闭而消亡;
|—3.在任何地方对application对象操作,都会影响其他用户的访问;
常用方法:
- void setAttribute(String name,Object obj); 设置自定义属性[name]、属性值[obj]
- Object getAttribute(String name); 返回指定属性名的属性值,若不存在,返回null
- Enumeration getAttributeNames(); 返回所有可用属性名的枚举
- String getServerInfo(); 返回JSP(servlet)引擎号以及版本号
6.page对象(指JSP页面本身)
常用方法:
- class getClass(); 返回该Object的Class
- int hashCode(); 返回该Object的hash码
- boolean equals(Object obj); 判断该Object是否与指定的Object相等
- void copy(Object obj); 将该Object拷贝到指定的Object中
- Object clone(); 克隆该Object,返回新的Object
- String toString(); 将该Object对象转换成String对象
- void notify(); 唤醒一个等待的线程
- void notifyAll(); 唤醒所有等待的线程
- void wait(int timeout); 使一个线程处于等待状态,直到timeout结束或者被notify(唤醒)
- void wait(int timeout); 使一个线程处于等待状态,直到被notify(唤醒)
7.pageContext对象 |—1.pageContext的实例(对JSP页面所有对象以及名称空间的访问);
|—2.能获取当前页面的session、application;
常用方法:
- JspWriter getOut(); 返回当前客户端响应被使用的JspWriter流(out)
- HttpSession getSession(); 返回当前页中的HttpSession对象(session)
- Object getPage(); 返回当前页的Object对象(page)
- ServletRequest getRequest(); 返回当前页面的ServletRequest对象(request)
- ServletResponse getResponse(); 返回当前页面的ServletResponse对象(response)
- void setAttribute(String name,Object); 设置自定义属性[name]、属性值[obj]
- Object getAttribute(String name,int scope); 返回指定范围内指定属性名的属性值,若不存在,返回null
- int getAttributeScope(String name); 返回某属性的作用范围
- void forward(String utlPath); 转发到urlPath页面
- void include(String utlPath); 当前位置包含另一个文件
8.config对象(当servlet初始化时,JSP引擎向它传递信息,包括参数(形式以键值对呈现)以及服务器的有关信息)
说白了就是在serlvet初始化的时候将config以参数形式传递给servlet的构造方法
常用方法:
- ServletContext getServletContext(); 返回含有服务器相关信息的SerlvetContext对象
- String getInitParamter(String name); 返回初始化参数的值
- Enumeration getInitParamterNames(); 返回Serlvet初始化所需所有参数的枚举
9.exception对象(异常对象,当一个页面运行过程中发生异常,便会产生该对象)
当一个JSP要应用该对象,则必须在page指令内将isErrorPage设为true,且在可能会发生错误的页面的page指令中设置 errorPage="JspPageName" 来指定该页面
常用方法:
- String getMessage(); 返回描述异常的消息
- String toString(); 返回关于异常的简短描述信息
- void printStackTrace(); 显示异常以及其栈轨迹
- Throwable FillInStakTrace(); 重写异常的执行栈轨迹