手记

《JAVA遇见HTML——JSP篇》总结

---------out对象---------
out对象:JspWriter类的实例,是客户端输出内容常用的对象。

常用方法:
void println()向客户端打印字符串
void clear()清除缓冲区的内容,如果在flush之后调用会抛出异常
void clearBuffer()清除缓冲区的内容,如果在flush之后调用不会抛出异常
void flush将缓冲区内容输出到客户端
int getBufferSize()返回缓冲区以字节数的大小,如不设缓冲区则为0
int getRemaining()返回缓冲区还剩余多少可用
boolean isAutoFlush()返回缓冲区满时,是自动清空还是抛出异常
void close()关闭输出流

---------get与post提交方式的区别---------
get与post区别:
<form name="regForm" action="动作" method="提交方式">
</form>

表单有两种提交方式:get与post
1get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过

2kb,安全性较低但效率比post方式高,适合提交数据量不大,安全性不高的数据,比如

:搜索、查询等功能
2post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户

信息。比如:注册、修改、上传等功能

---------request对象(上、下)---------
request对象:
客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应

。它是HttpSerletRequest类的实例。request对象具有请求域,即完成客户端的请求之

前,该对象一直有效

常用方法如下:
String getParameter(String name)返回name指定参数的参数值
String[] getParameterValues(String name)返回包含参数name的所有值的数组
void setAttribute(String,Object)存储此请求中的属性
object getAttribute(String name)返回指定属性的属性值
String getContentType()得到请求体的MIME类型
String getProtocol()返回请求用的协议类型及版本号
String getServerName()返回接受请求的服务器主机号
int getServerPort()返回服务器接受此请求所用的端口号
String getCharacterEncoding()返回字符编码方式
void setCharacterEncoding()设置请求的字符编码方式
int getContenLength()返回请求文件的长度(以字节数)
String getRemoteAddr()返回发送此请求的客户端IP地址
String getRealPath(String path)返回一虚拟路径的真实路径
String request.getContextPath()返回上下文路径

//接收采用utf-8,但无法解决使用UML传递中文出现的乱码问题
<%
request.setCharacterEncoding("utf-8");
%>
//UML传递中文乱码问题可在tomcat配置文档server.xml文件里的Connector标签下加

URIEcoding="utf-8" 重启tomcat服务器后生效

---------response对象---------
response对象:
response对象包含了响应客户请求的有关信息,它3是HttpServletRespose类的实例。

response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这

次访问有效,其他页面的response对象对当前页面无效

常用方法如下:
String getCharacterEncoding()返回响应用的何种字符编码
void setContentType(String type)设置响应的MIME类型
PrintWriter getWriter()返回可以向客户端输出字符的一个对象(注意比较:

PrintWriter与内置out对象的区别,打印时,总是优先于内置的out对象)
(可以在out对象打印语句后使用out.flush()强制清空缓冲区,会强制地把清空的内容

输出到浏览器)
sendRedirect(java.lang.String location)重新定向客户端的请求

---------请求重定向与请求转发的区别---------
请求重定向:客户端行为,response.sendRedirect(),本质上讲等同于两次请求,前一

次的请求对象不会保存,地址栏的URL地址会改变。

请求转发:服务器行为,request.getRequestDispatcher().forWard(req.resp);是

一次请求,转发后请求对象会保存,地址栏的URL地址不会改变

---------什么是session---------
1、session表示客户端与服务器的一次会话
2、Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的

这段时间,也就是用户浏览这个网站所花费的时间
3、在服务器的内存中保存着不同用户的session

---------session对象---------
1session对象是一个jsp内置对象
2session对象在第一个jsp页面被装载时自动创建,完成会话期管理
3从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,

被称为一个会话
4当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过

某种办法知道这是一个客户,就需要session对象
5session对象是HttpSession类的实例

session对象常用方法如下:
long getCrestionTime():返回session创建时间
public String getId():返回session创建时jsp引擎为它设的唯一ID号
public Object setAttribute(String name,Object value):使用指定名称将对象绑

定到此会话
public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起

的对象,如果没有对象绑定在该名称下,则返回null
String[] getValueName():返回一个包含此session中所有可用属性的数组
int getMaxInactiveInterval():返回两次请求间隔多长时间此session被取消(单位

秒)

---------session的生命周期---------
创建:
当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个

SessionId,每次客户端向服务器端发送请求时,都会将此SessionId携带过去,服务端

会对此SessionId进行校验.

活动:
1某次会话当中通过超链接打开的新页面属于同一次会话
2只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同

一次会话
3除非本次会话的所有页面都关闭后,重新访问某个jsp或者servlet才会创建新的会话
注意:原有会话还存在,只是这个旧的SessionId仍然存在与服务器,只不过再也没有

客户端会携带它然后交予服务端校验

销毁(只有三种方式):
1调用session.invalidate()方法
2Session过期(超时)
3服务器重新启动

Tomcat默认session超时时间为30分钟
设置session超时有两种方式:
1session.setMaxInactiveInterval(时间);//单位是秒
2在web.xml配置
<session-config>
<session-timeout>
10
</session-timeout>
</session-config>//单位是分钟

---------application对象---------
1application对象实现了用户间数据的共享,可存放全局变量
2application开始于服务器的启动,终止于服务器的关闭
3在用户的前后链接或不同用户之间的链接中,可以对application对象的同一属性进行

操作
4在任何地方对application对象属性的操作,都将影响到其他用户对此的访问
5服务器的启动和关闭决定了application对象的生命
6application对象是ServletContext类的实例

常用方法如下:
public void setAttribute(String name,Object value)使用指定名称将对象绑

定到此会话
public Object getAttribute(String name)返回与此会话中的指定名称绑定在一起的

对象,如果没有对象绑定在该名称下,则返回null
Enumeration getAttributeNames()返回所有可用属性名的枚举(有一些内置的属性)
String getServerInfo()返回JSP(SERVLET)引擎名及版本号

---------page对象---------
page对象:
page对象就是指向当前jsp页面本身,有点像类中的this指针,它是java.lang.Object

类的实例

常用方法:
class getClass()返回此object的类
int hashCode()返回此object的hash码
boolean equals(Object obj)判断此object是否与指定的object对象相等
void copy(Object obj)把此object拷贝到指定的object对象中
Object clone()克隆此object对象
String toString()把此object对象转换成String类的对象
void notify()唤醒一个等待的线程
void notifyAll()唤醒所有等待的线程

---------pageContext对象和config对象---------
pageContext对象
pageContext对象提供可对jsp页面内所有的对象及名字空间的访问
pageContext对象可以访问到本页所在的session,也可以取本页面所在的application

的某一属性值
pageContext对象相当于页面中所有功能的集大成者
pageContext对象的本类名也叫pageContext

常用方法:
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 attribute)设置属性及属性值
Object getAttribute(String name,int scope)在指定范围内取属性的值
int getAttributeScope(String name)返回某属性的作用范围
void forward(String relativeUrlPath)使当前页面重导到另一个页面
void include(String relateUrlPath)在当前位置包含另一个文件

Config对象:
Config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括

Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的相关信息(

通过传递一个ServletContext对象)

常用方法:
ServletContext getServletContext()返回含有服务器相关信息的ServletContext对


String getInitParameter(String name)返回初始化参数的值
Enumeration getInitParameterNames()返回Servlet初始化所需所有参数的枚举

---------exception对象---------
Exception对象:
Exception对象是一个异常对象,当一个页面在运行过程中发生了异常,就产生这个对

象。如果一个jsp页面要应用此对象,就必须吧isErrorPage设为true,否则无法编译。

他实际上是java.lang.Throwable的对象,常用方法如下:

String getMessage()返回描述异常的消息
String toString()返回关于异常的简短描述信息
void printStackTrace()显示异常及其栈轨迹
Throwable FillInStrackTrace()重写异常的执行栈轨迹

---------JavaBean简介及设计原则---------
javabean简介:
Javabean就是符合某种特定的规范的java类。使用javabeans的好处是解决代码重复编

写,减少代码冗余,功能区分明确,提高了代码的维护性

javabean的设计原则:
是公有类、有无参的公有构造方法,属性私有,getter方法和setter方法对属性进行封

---------什么是JSP动作元素---------
jsp动作元素(action element),动作元素为请求处理阶段提供信息。动作元素遵循

xml元素的语法,有一个包含元素名的开始标签,可以有属性、可选的内容、与开始标签

匹配的结束标签。

第一类是与存取javabean有关的,包括:
<jsp:useBean><jsp:setProperty><jsp:getProperty>
第二类是jsp1.2就开始有的基本元素,包括6个动作元素
<jsp:include><jsp:forward><jsp:param><jsp:plugin><jsp:params><jsp:fallbac

k>
第三类是JSP2.0新增加的元素,主要JSP Document有关,包括6个元素
<jsp:root><jsp:declaration><jsp:scriplet><jsp:expression><jsp:text><jsp:o

utput>
第四类是JSP2.0新增的动作元素,主要是用来动态生成xml元素标签的值,包括3个动作
<jsp:attribute><jsp:body><jsp:element>
第五类是JSP2.0新增的动作元素,主要是用在Tag File中,有2个元素
<jsp:invoke><jsp:dobody>

---------使用普通方式创建JavaBean---------
第一种方法:像使用普通java类一样,创建javabean实例。
第二种方法:在Jsp页面中通常使用jsp动作标签使用javabean

---------useBean动作元素---------
作用:在jsp页面中实例化或者在指定范围内使用Javabean
语法:
<jsp:userBean id="标签符" class="java类名(全名,包括包名)" scope="作用范围

"/>

---------setProperty---------
作用:给已经实例化的javabean对象的属性赋值,一共有4中形式
<jsp:setProperty name="javabean实例名" property="*"/>(跟表单关联)
<jsp:setProperty name="javabean实例名" property="javabean属性名"/>(跟表单

关联)
<jsp:setProperty name="javabean实例名" property="javabean属性名"

value="BeanValue"/>(手工设置)
<jsp:setProperty name="javabean实例名" property="propertyName"

param="request对象中的参数名"/>(跟request参数关联)

---------getProperty---------
作用:获取指定Javabean对象的属性值
<jsp:getProperty name="javabean实例名" property="属性名"/>

---------JavaBean四个作用域范围---------
使用useBeans的scope属性可以用来指定Javabean的作用范围
page//仅在当前页面有效
request//可以通过HttpRequest.getAttribute()方法取得Javabean对象。
session//可以通过HttpSession。getAttribute()方法取得javabean对象。
application//可以通过application.getAttribute()方法取得javabean对象

---------Model 1(jsp+javabean)简介---------
Model 1模型出现前,整个web应用的情况:几乎全部由jsp页面组成,jsp页面接收处理

客户端请求,对请求处理后直接做出响应

弊端:在界面层充斥着大量的业务逻辑的代码和数据访问层的代码,web程序的可扩展性

和可维护性差。

javabean的出现可以使jsp页面中javabean封装的数据或调用javabean的业务逻辑代码

,这样大大提升了程序的可维护性。

---------http协议的无状态性---------
http协议的无状态性:
无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端请求。
但当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览

器。
服务器不会记住,所以就是无状态协议

---------Cookie概述---------
保存用户的状态的两大机制:Session Cookie

Cookie:是web服务器保存在客户端的一系列文本信息
典型应用一:判定注册用户是否已经登录网站。
典型应用二:"购物车"的处理

Cookie的作用:
对特定对象的追踪
保存用户网页浏览记录与习惯
简化登陆

安全风险:容易泄露用户信息

---------JSP页面中创建和使用Cookie---------
创建Cookie对象:
Cookie newCookie=new Cookie(String Key,Object Value);
写入Cookie对象:
response.addCookie(newCookie);
读取Cookie对象:
Cookie[] cookies=request.getCookies();

常用方法:
void setMaxAge(int expiry)设置cookie的有效期,以秒为单位
void setValue(String value)在cookie创建后,对cookie进行赋值
String getName()获取cookie的名称
String getValue()获取cookie的值
int getMaxAge()获取cookie的有效时间,以秒为单位

---------案例:Cookie在登陆中的应用---------
实现记忆用户名和密码功能

---------Session与Cookie的对比---------
Session:
1在服务器端保存用户信息
2session中保存的是Object类型
3随会话的结束而将其存储的数据销毁
4保存重要的信息

Cookie:
1在客户端保存用户信息
2cookie保存的是String类型
3cookie可以长期保存在客户端
4保存不重要的用户信息

---------include指令---------
语法:
<%@ include file="URL"%>

---------include动作---------
语法:
<jsp:include page="URL" flush="true|false"/>
page:要包含的页面
flush:被包含的页面是否从缓冲区读取

---------include指令与include动作的区别---------

---------forward动作---------
语法:
<jsp:forward page="URL"/>
等同于:
request.getRequestDispatcher("/url").forward(request,response);

---------param动作---------
语法:
<jsp:param name="参数名" value="参数值">
常常与<jsp:forward>一起使用,使用其的子标签。

---------项目原型---------
采用Model1(jsp+javabean)实现
1实现DBHelper类操作数据库
2创建实体类
3创建业务逻辑类(DAO)
4创建页面层

---------DBHelper类设计---------
jdbc驱动应该放在WEB—INF下的lib文件夹下

//数据库驱动
private static final String driver = "com.mysql.jdbc.Driver";
//连接数据库的URL地址
private static final String url="jdbc:mysql://localhost:3306/shopping?

useUnicode=true&characterEncoding=UTF-8";
//数据库的用户名
private static final String username="root";
//数据库的密码
private static final String password="";

---------商品实体类设计---------

---------获取所有商品资料的实现---------
释放资源从小到大释放:释放数据集对象-->释放语句对象

---------所有商品信息显示---------

---------商品详细信息显示---------

---------使用Cookie实现保存商品浏览记录---------

2人推荐
随时随地看视频
慕课网APP