java web总结
JavaWeb总结
1.JSP运行原理
(1)用户通过客户端浏览器向服务器发送请求。
(2)JSP文件将JSP引擎编译成Java的class文件,即servlet。(3)将产生的servlet加载到内存执行。
(4)Servlet的运行结果以HTML(或XML)形式通过web服务器返回客户端的浏览器。
2.web项目设计
(1)公开目录(2)web_INF目录(3)Class目录
3.JSP的基本语法
(1)脚本元素:声明、脚本段、表达式。(2)脚本段:
(3)声明:不会产生任何输出内容→声明全局变量。(4)表达式:(5)EL表达式:${}
(6)指令元素:不在客户端可见(7)page指令、include指令、taglib指令
page指令:language属性、contentType(text/html)、text/plainapplication/msword、application/x-msexecl、PageEncoding、info、import属性.
include指令:在JSP页面中静态包含一个文件taglib指令:指令元素翻译阶段执行,动作元素执行阶段被执行。
用于包含其他文件可以是静态文件,也可以是动态文件。包含动态文件时用传(建一值)考点:
4.指令与动作的区别(include)1.执行时间不同
指令是偏译时包含静态文件
动作是运行时包含的文件2.引入内容不同
指令引入静态文本(html.jsp)。动作引入执行页面或severlet的应答文本。
5.JSP内置对象
Out,request,response,session,application,page,pageContext,exception,config
request客户端向服务端发送请求。
response用于服务器端封装JSP处理请求后产生的结果。response对象的sendRedirect(url)方法相当于两次请求。
而在网址不变情况下内部跳转不同页面,但依旧属于同一次请求
6.session和cookie的区别
1.存放地点不同
Session存放在服务器端,cookie存放在客户端的硬盘里2.存活时间
session随用户访问服务器而产生,随客户下线或超时而消失3.安全性
session存放在服务器端,不能被修改,且随客户端浏览器的关闭而消失,安全性较好。Cookie存放在客户端,安全性较差。
7.数据库
java.sql.Driver
java.sql.DriverManager加载驱动程序java.sql.Connetion表示数据库连接对象,对数据库一切操作都在这个基础上
java.sql.Statement执行SQL语句和返回结果
java.sql.ResultSet结果集用来暂时存放数据库查询操作结果
8.编写程序的步骤1.装载驱动程序
class.forName("com.mySQL.jdbc.Driver")2.定义所需连接数据库的地址
StringmysqlURL="jdbc.mysql://host:port/dbName"3.建立与数据库的连接
Connectionconn=DriverMannager.getConnection(url,"登录数据库用户名","密码")
4.声明并执行SQL语句5.处理返回的结果6.关闭对象
StringdriverStr="com.mysql.jdbc.Driver"
Stringconnstr="jdbc:mysql://localhost:3306/book";ClassforName(driverStr)
Connectionconn=DriverManager.getConnection(connstr."root"."123")第4步:建立语句对象
Statementstmt=conn.createStatement()第5步:声明并执行SQL语句
Stringsql="select*frombook";
ResultSetrs=stmt.executeQuery(sql);第6步:
Statement接口的3个方法:1、ResultSetexecuteQuery(Stringsql)2、intexecuteUpdate(Stringsql)3、booleanexecute(Stringsql)ResultSet的方法:1、booleannext()2、getxxx()
第7:rs.close()stmt.close()con.close()注:关闭资源的顺序与打开资源顺序恰好相反。第8步:异常处理
try{.........}catch(SQLExecptionex){.........}
9.JavaBean组件(可重用)
组件:是一个独立的模块,外界可以不了解内部如何实现,只需通过其提供的接口对组件进行访问即可,组件可重用。
特点:1、实现代码重复使用;2、易编写,易维护,易使用。
10.JavaBean类的编码约定
1、类实现了java.io.Serializable接口2、必须放在某个Package(包)中
3、类中如果有构造方法,那么这个方法是共有的,并且无参数4、所有属性都是私有的(private修饰)5、getXXX:用来获取属性,此方法是共有的6、setXXX:用来设置属性,此方法是共有的
7、对于boolean类型的成员变量允许使用“is”代替“get”和“set”8、类中的普通方法不适合上面的命名规则,但这个方法必是public的。
3个标记:
网页中创建JavaBean实例
用于为bean中的属性赋值用于获取bean中属性的值id=”javaBean实例名”class=”javaBean对应的类名”设置的属性
获取JavaBean实例指令的属性值,并将这个值转换成字符串显示到JSP页面。
11.servlet的生命周期
(1)当客户第一次请求servlet时,servlet被加载到内存容器会创建servlet实例,并调用其init()方法进行初始化工作。
(2)容器创建请求对象,然后调用servlet的service()方法为客户提供服务。(3)当servlet不再被需求时,容器调用servlet的destory()方法将servlet实例销毁。
12.Servlet开发
引入import.javax.servlet.*和import.javax,servlet.http.*包
13.Servlet过滤器
Servlet过滤器是一种java组件,它位于客户端和处理程序之间Servlet过滤器工作原理
14.Model1和model2Model1:JSP+JavaBean
Model2:JSP+Servlet+JavaBean
Model1中,jsp页面实现页面显示、业务逻辑和流程控制,数据处理由JavaBean完成。
优点:进行快速和小规模的应用开发时优势非常明显。缺点:不利于web应用的扩展和更新;调试和排错困难。
Model2中,MVC模式--->模型-视图-控制器.即把web应用的输入输出和处理流程按照Model.View和Controller分成三层。Model1和Model2的区别:
Model1和Model2实际上就是对采用JSP技术开发的web应用的不同模型的描述。Model1采用JSP+JavaBean技术开发web应用,它比较适合小规模应用的开发,效率较高,易于实现,但由于在JSP页面中内嵌了大量的Java代码,以至于当业务逻辑复杂时,代码可维护性、可扩展性和可重用性就会下降;Model2采用JSP+Servlet+JavaBean技术开发web应用,该模型基于MVC模式,完全实现了页面显示和逻辑的分离,它充分利用了JSP和Servlet两种技术的优点,JSP更适合前台页面的开发,而Servlet更擅长服务器端程序的编写,Model2分工明确,更适合大型项目的开发和管理。视图(view)用于与用户交互,可以用HTML.JSP实现。
15.模型(model)用于表示业务数据和实现业务逻辑,可以用JavaBean实现控制器(controller)完成流程控制,它接收来自视图层用户输入的数据,并调用相应的模型进行处理,最后选择合适的视图去响应用户。控制层可以用Servlet实现。
优点:MVC模式完全实现了页面表示和业务逻辑的分离;MVC优势之一在于三层各司其职,互不干涉。缺点:没有明确的定义。
模型层为JavaBean,实现了数据的表示和业务逻辑,视图层为JSP页面,只负责显示功能。
控制器为Servlet,负责接收用户的请求,设置JavaBean属性,调用JavaBean完成业务处理,最后将处理结果交给JSP页面显示。16.自定义标签
对隐式对象的操作、处理表单、访问数据库及其他企业级服务。
自定义标签种类:
1.不带有属性和标签体:
2.带有属性没有标签体的标签:3.带有属性带有标签体:myBody
17.EL表达式基本语法${expr}
功能:对属性对象的简明访问:${user}
对属性对象的属性访问:${customer.firstname}
对属性集合元素的访问:对数组和list:${variable[index]}对map:${variable[key]}
对请求参数cookie等的简单访问.请求参数${param.custID}
Cookie对象:${cookie.userCookie}
18."."操作符和"[]"操作符${user.address}=${user[address]}访问数组和集合元素,需使用[]${class[0].name}=${class[0][name]}
${param.username}={%=request.getparameter("userName")%}
19."."与"[]"使用存在差异
1.当访问的数据中包含一个特殊字符(如:"."或"_"时),就必须用"[]"操作符2.当动态取值时必须使用"[]"操作符,"."操作符只能取到静态的值
注:当"[]"操作符中的属性名为常量时必须用""""引起,否则将会当做变量来处理.20.SQL标签
1.标签2.执行数据库查询3.执行数据库更新
4.和指明参数值5.用于事务处理
21.Tomcat的目录结构及描述:
\\bin放置启动和关闭Tomcat的可执行文件和批处理文件
\\common放置在此目录中的jar、class文件,可以被此服务器下所有的web应用使用
\\conf放置Tomcat的主要配置文件\\logs放置Tomcat的日志文件
\\server放置Tomcat管理接口的应用\\src放置Tomcat相关的源代码\\temp放置Tomcat临时文件\\webapps放置Tomcat应用的目录
\\work放置JSP页面翻译成对应的Servlet类的目录
扩展阅读:Java Web总结
JavaWeb总结
1.Web工作原理..........................................................................................................................2
1.1.HTTP处理步骤............................................................................................................21.2.HTTP请求的组成........................................................................................................21.3.HTTP响应的组成........................................................................................................31.4.理解HTTP无状态协议...............................................................................................31.5.CGI与Servlet..............................................................................................................31.6.Servlet的主要任务......................................................................................................41.7.Web容器......................................................................................................................41.8.JavaWeb应用程序的组成...........................................................................................42.Servlet基础.............................................................................................................................4
2.1.Servlet框架的组成......................................................................................................42.2.Servlet编码和部署......................................................................................................52.3.ServletURL映射路径.................................................................................................52.4.Servlet生命周期.........................................................................................................62.5.ServletConfig与ServletContext................................................................................63.HTTP请求................................................................................................................................8
3.1.Servlet与Web容器配合处理请求和响应.................................................................83.2.GET与POST提交方式的区别..................................................................................83.3.获取HTTP协议请求行...............................................................................................83.4.获取HTTP协议请求头...............................................................................................93.5.获取表单数据...............................................................................................................93.6.请求转发.......................................................................................................................93.7.请求范围对象绑定.......................................................................................................94.HTTP响应................................................................................................................................9
4.1.HTTP状态行................................................................................................................94.2.设置响应头.................................................................................................................104.3.设置响应消息体.........................................................................................................104.4.传输数据.....................................................................................................................10
4.4.1.传输文本数据.................................................................................................104.4.2.传输二进数据.................................................................................................104.4.3.请求重定向.....................................................................................................10
5.Web应用程序状态管理........................................................................................................11
5.1.Cookie.........................................................................................................................115.2.Session........................................................................................................................115.3.URL重写....................................................................................................................126.对象作用域与Servlet事件监听器.......................................................................................13
6.1.对象作用域.................................................................................................................136.2.监听器.........................................................................................................................137.过滤器.....................................................................................................................................158.JSP...........................................................................................................................................JSP运行机制:..........................................................................................................16JSP语法和语义..........................................................................................................168.2.1.JSP脚本元素..................................................................................................168.2.2.JSP注释..........................................................................................................178.2.3.JSP指令..........................................................................................................178.2.4.JSP标准动作..................................................................................................178.2.5.JSP隐式对象..................................................................................................17
9.JavaWeb开发模式................................................................................................................18
9.1.MVC模型...................................................................................................................18
9.1.1.视图.................................................................................................................189.1.2.模型.................................................................................................................189.1.3.控制器.............................................................................................................189.2.MVC实现步骤...........................................................................................................1910.JSTL与EL表达式......................................................................................................19
10.1.EL表达式解释.......................................................................................................1910.2.在EL表达式中的隐式变量..................................................................................19
8.1.8.2.
1.Web工作原理
1.1.HTTP处理步骤
创建与服务器的连接发送HTTP请求
接收客户端HTTP请求,生成HTTP响应回发关闭与服务器的连接
1.2.HTTP请求的组成
请求行请求头空行消息体
1.3.HTTP响应的组成
状态行响应头空行消息体
1.4.理解HTTP无状态协议
主要是说,客户机的状态,服务器是不知道的。比如说,用户关掉浏览器,服务器无法得知。只能向客户端提供静态网页内容
1.5.CGI与Servlet
CGI:即通用网关接口(CommonGatewayInterface),它可以用Shell、Perl、C、PHP、Python等编写。每次请求就打开一个CGI进程,严重消耗服务器资源。极大地限制了一个服务器可以支持的并发CGI用户数量,但是安全性高。
Servlet:Servlet与Web容器被设计用来解决CGI的问题,JavaServlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。Servlet运行在一个主进程或者一个父程序中,这就是为什么Servlet更高效的关键原因。
1.6.Servlet的主要任务
读取客户端发送的显式和隐式数据生成结果
向客户端发送显式数据(即文档)和隐式数据(HTTP响应数据)
1.7.Web容器
Web容器负责管理和运行Servlet,容器对Servlet的支持包括:通信支持生命周期管理多线程支持JSP支持处理安全性
1.7.1.1.1.7.1.2.1.7.1.3.1.7.1.4.1.7.1.5.
1.8.JavaWeb应用程序的组成
配置文件、静态HTML文件和JSP、类文件和包。
2.Servlet基础
2.1.Servlet框架的组成
Servlet框架的核心是:javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。Servlet框架是由2个Java包组成:javax.servlet和javax.servlet.httpjavax.servlet包中定义了所有Servlet类都必须实现的接口和类。javax.servlet包的接口为:
ServletConfig接口----在初始化过程中由Servlet容器使用ServletContext接口----定义Servlet用于获取容器信息的方法ServletRequest接口----向服务器请求信息ServletResponse接口----响应客户端请求
Servlet接口----定义所有Servlet必须实现的方法javax.servlet包中的类为:
ServletInputStream类----用于从客户端读取二进制数据ServletOutputStream类----用于将二进制数据发送到客户端
GenericServlet类----抽象类,定义一个通用的,独立于底层协议的Servlet。javax.servlet.http包中定义了采用HTTP通信的HttpServlet类。
javax.servlet.http包的接口为:
HttpServletRequest接口----提供http请求HttpServletResponse接口----提供http响应
HttpSession接口----用于标识客户端并存储有关客户信息
HttpSessionAttributeListener接口----实现这个侦听接口用户获取会话的属性列表的改变的通知
javax.servlet.http包中的类:
HttpServlet类----扩展了GenericServlet的抽象类,用于扩展创建HttpServlet处理Http请求
Cookie类----创建一个Cookie,用于存储Servlet发送给客户端的信息
注意javax.servlet包和javax.servlet.http包的区别,javax.servlet.http这个包里的类都去实现了javax.servlet包里的接口,用于专门用于HTTP协议。
2.2.Servlet编码和部署
Servlet体系结构:Servlet-->GenericServlet-->HttpServlet-->用户自定义的Servlet
2.2.1.1.用户自定义的Servlet继承HttpServlet,重写一下方法中的一个:doGet()和doPost()2.2.1.2.在容器中注册Servlet,配置web.xml,在web.xml文件中加入
Hello
com.lovo.servlet.Hello
2.2.1.3.映射虚拟路径,同样是通过配置web.xml,在web.xml文件中加入
Hello/Hello
2.3.ServletURL映射路径
2.3.1.1.精确模式匹配。这种类型的模式用于将请求一对一映射到指定的Servlet。
2.3.1.2.扩展名匹配“*.扩展名”。在这种情况下,所有以指定扩展名结尾的URL都转向指
定的Servlet。2.3.1.3.路径映射。路径映射必须以"/"开始,以"/*"结尾,在这之间可以出现任意字符。路径
匹配通常用于将对某个目录的所有请求转向一个指定的Servlet。
2.3.1.4.默认的Servlet,"/"。默认的Servlet映射用于定义一个在没有给出路径信息时请求
转向的Servlet。
2.4.Servlet生命周期
Servlet的生命周期由Servlet容器控制,该容器创建Servlet的实例。
Servlet生命周期就是指创建Servlet实例后响应客户请求直至销毁的全过程。Serlvet生命周期的三个方法:init()-->service()-->destroy()Servlet生命周期:
实例化:Servlet容器创建Servlet类的实例对象,有两种方式,一种是容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。另一种是容器启动时创建Servlet实例,1,数字越小启动顺序越靠前。
初始化:Servlet容器调用Servlet的init()方法
服务:容器调用service()方法,根据请求的方式,调用doGet或者doPost方法销毁:销毁实例之前调用destroy()方法
2.5.
ServletConfig与ServletContext
2.5.1.ServletConfig与ServletContext的关系
一个Servlet对应一个ServletConfig,也就是说容器加载了多少个Servlet就有多少个ServletConfig。而ServletContext是在容器启动时创建,一个Web应用一个ServletContext,可以把ServletContext看成是一个全局变量,所有的Servlet共享。
2.5.2.ServletContext应用上下文
属于整个Web应用程序,可以访问到Web应用程序资源的本地输入流,把资源的虚拟路径转换为物理路径,绑定一个对象在整个Web应用程序中共享。常用的方法有:
getRealPath():返回一个web资源的真实路径
getResourcePaths(path):返回一个指定路径下的所有资源列表getResourceAsStream(path):返回一个资源的InputStreamgetResource(path):返回一个web资源的URL地址setAttribute(name,value):保存一个共享数据getAttribute(name):提取共享数据
2.5.3.ServletConfig
通过重写有参数的init(ServletConfigconfig)方法获取到ServletConfig对象,通过config.getInitParameter("driver")方法获取到web.xml里相对应的配置信息。
publicvoidinit(ServletConfigconfig)throwsServletException{
}Hello
com.lovo.servlet.Hello
driver
//TODOAuto-generatedmethodstubconfig.getInitParameter("driver");super.init(config);Hello:com.mysql.driver.Driver
3.HTTP请求
3.1.Servlet与Web容器配合处理请求和响应
3.1.1.客户端向Web服务器发起一个HTTP请求。3.1.2.HTTP请求被Web服务器接受,如果请求的是静态页面,则由Web服务器负责处理。
如果请求的是JavaWeb组件(Servlet或者JSP),则移交给Web容器。Web容器可以在主机的同一个进程、不同的进程或其他的Web服务主机的进程中启动。
3.1.3.Web容器根据Servlet的配置文件确定调用的具体Servlet类,并把HttpServletRequest
对象、HttpServletResponse对象传给它。
3.1.4.Servlet通过HttpServletRequest对象知道客户端的使用者是谁,客户的请求信息是什
么和其他的一些信息。Servlet处理完请求后把要返回的信息放入HttpServletResponse对象返回到客户端。
3.1.5.一旦Servlet完成了请求的处理,Web容器就会刷新HttpServletResponse,把控制权
返回给web服务器。
由此可见,每一次请求容器都会创建去创建HttpServletRequest对象与HttpServletResponse
3.2.GET与POST提交方式的区别
GET方式只能提交文本数据,POST即可以提交文本数据也可以提交二进制数据。GET方式一次只能提交1024个字节,而POST没有限制。
安全性问题。使用GET的时候,参数会显示在地址栏上,而POST不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用GET,如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用POST为好。
3.3.获取HTTP协议请求行
3.3.1.getMethod():获取HTTP的请求方法,例如GET、POST等3.3.2.getRequestURI():获取请求的URI资源
3.3.3.getRequestURL():获取请求的URL,包含协议名、服务器名或IP、端口号和请求资
源但不包括查询字符串参数
3.3.4.getQueryString():获取请求URL后面的查询字符串3.3.5.getProtocol():获取HTTP的协议名和版本号
3.3.6.getContextPath():获取请求URI资源的上下文路径3.3.7.getServletPath():获取Servlet的映射路径3.4.获取HTTP协议请求头
1.2.3.4.5.
getHeader(name):返回指定的请求头的值
getHeaders(name):返回一个Enumeration(枚举)包含请求头中的所有值getHeaderNames():特定请求中接受到的所有请求头的名称
getIntHeader(name):获取特定请求头的值,并将其转化为int类型
getDateHeader(name):获取特定请求头的值,并将其转化为Date类型
3.5.获取表单数据
1.getParameter(parameterName):获取表单参数的值,参数名区分大小写,与
HTML表单中出现的参数名一致,GET请求还是POST请求都可以采用相同的方式
2.getParameterValues(parameterName):获取同一个参数名的多个参数值,返回字
符串数组对象
3.getParameterNames():以Enumeration(枚举)的方式返回请求中所有的表单
参数名列表
3.6.请求转发
请求转发是客户端向服务器发送请求后,服务器将这一次请求又交给了另一个Servlet。由另一个servlet来作出响应。请求转发只有一次请求。
1.getRequestDispatcher(path):方法返回给定路径的RequestDispatcher对象2.getNamedDispatcher(name):返回某个名称的Servlet的RequestDispatcher对
象3.forward(ServletRequest,ServletResponse):派发请求和响应对象到
RequestDispatcher对象所确定的新资源(Servlet、JSP或者HTML等)4.include(ServletRequest,ServletResponse)该方法关键是能包含服务器端的资源
3.7.请求范围对象绑定
变量可以可以通过request.setAttribute("value",param)将对象保存在请求范围中,可以通过request.getAttribute("value")获取在请求范围内所绑定的相应的对象但是在请求范围之外就不能进行访问了。结合请求转发理解。
4.HTTP响应
4.1.HTTP状态行
状态行分为HTTP协议、状态码和状态描述三个部分100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。200-299:表示客户请求成功。
300-399:表示用于已经移走的资源文件,指示新的地址。400-499:表示由客户端引发的错误。500-599:表示由服务器端引发的错误。
浏览器会根据以上的状态码作出相应的处理。
通过response.setStatus(HttpServletResponse.SC_NOT_FOUND),设置响应的响应码,注意使用HttpServletResponse的常量进行设置。
4.2.设置响应头
1.2.3.4.5.6.7.
setHeader()addHeader()setIntHeader()setDateHeader()containsHeader()setContentType()addCookie()
4.3.设置响应消息体
response.setContentType("image/gif");方法可以处理乱码和显示其他形式的内容例如把内容以其它的形式显示出来(如:图片、Excel等)
4.4.传输数据4.4.1.传输文本数据
利用PrintWriterout=response.getWriter()获取一个字符输出流传输文本out.println("HelloWorld");
4.4.2.传输二进数据
利用OutputStringout=getOutputStream()获取一个字节输出流传输二进制数据our.write(byte[]b);
4.4.3.请求重定向
response.sendRedirect(":3030/bbs/main.html");与请求传发不同,重定向是先对客户端作出响应,响应码为302或者307,浏览器再根据重定向的路径再发起一次新的请求。(结合请求转发理解)5.Web应用程序状态管理
对容器而言,每一个请求都来自于一个新的客户,我们可以利用Cookie、Session、以及URL重写让服务器知道,这一系列的请求都是同一个用户的行为。
5.1.Cookie
服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端。Cookiecookie=newCookie("cookie","tiger!");response.addCookie(cookie);
Servlet中提供了如下一系列操作Cookie的API:
1.Cookie(name,value):构造方法用于创建一个或多个Cookie
2.setMaxAge(intlifetime):设置Cookie的过期时间(以秒为单位)。默认值为负
值(Cookie将在浏览器关闭时过期)3.getMaxAge():获取Cookie的过期时间。
4.setName(StringcookieName):设置Cookie的名字5.getName():获取Cookie的名字
6.setValue(Stringvalue):指定Cookie的值。7.getValue():获取Cookie的值
5.2.Session
服务器可以为客户端创建并维护一个Session对象,用于存放数据。在创建Session对象的同时,服务器将会为该Session对象产生一个唯一编号,这个编号称之为SessionID,服务器以Cookie的方式将SessionID存放在客户端。当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问。
HttpSessionsession=request.getSession(),容器在第一次调用getSession()方法的时候创建Session对象将Session对象存放于容器内,直到Session过期。另外还可以通过isNew()方法来判断是不是第一次创建Session
HttpSession接口常用的一些方法:
1.setAttribute(java.lang.String,java.lang.Object):在Session对象中用一个名字绑
定一个对象。
2.getAttribute(java.lang.String):通过名字获取Session对象中保存的对象。3.removeAttribute(java.lang.String):在Session中删除与一个名字对应的对象。4.getCreationTime():返回第一次创建会话的时间。
5.getLastAccessedTime():返回容器最后一次得到该会话ID的请求时间。
6.setMaxInactiveInterval(intinterval):对于会话指定客户请求的最大间隔时间,
以秒为单位。-1表示永不过期
7.getMaxInactiveInterval(intinterval):返回客户请求的最大间隔时间。
8.invalidate():会话结束,当前存在在会话中的所有会话属性也会解除绑定。9.getId():此方法返回每个session唯一的标识
Session的过期时间设置,通过在web.xml里进行配置,单位是分钟,如果不进行配置默认的过期时间由容器决定,比如Tomcat默认的过期时间为30分钟。
155.3.URL重写
Session对象的正常使用要依赖于Cookie,如果用户禁用Cookie,则浏览器无法再将SessionID发送至服务器,这时候服务器就无法通过SessionID检索到以前的Session对象,并对其进行访问了。为了解决这个问题可以利用URL地址重写能够取得置于Cookie中的会话,并把会话ID附加到访问应用的各个URL最后。response.encodeURL(“/bbs/index.html”)用于链接
response.encodeRedirectURL(“/bbs/index.html”)用于重定向
6.对象作用域与Servlet事件监听器
6.1.对象作用域
在Servlet里可以用一个名字绑定一个对象通过setAttribute(String,Object)绑定,通过getAttribute(Sting)获取一个所绑定的对象。ServletContext对象、HttpSession对象、ServletRequest对象都有这两个方法。
ServletContext(上下文)整个Web应用程序HttpSession(会话)一个会话交互过程ServletRequest(请求)一次请求过程范围越大所消耗的系统资源就越多。并且他们都不是线程安全的,存在一定的安全隐患。
6.2.监听器
监听session,request,application这三个对象里存取数据的变化,监听器对象可以在事情发生前、发生后可以做一些必要的处理,Servlet监听器主要目的是给Web应用增加事件处理机制,以便更好地监视和控制Web应用的状态变化事件类型生命周期ServletContext事件属性改变生命周期会话迁移HttpSession事件属性改变对象绑定生命周期ServletRequest事件属性改变描述Listener接口Servlet上下文刚被创建并可以开始为第一次请求服务,或者Servlet上下文将要ServletContextListener被关闭发生的事件Servlet上下文内的属性被增加、删除或者替换时发生的事件HttpSession被创建、无效或超时时发生HttpSession被激活或钝化时发生在HttpSession中的属性被增加、删除、替换时发生对象被绑定到或者移出HttpSession时发生。在Servletr请求开始被Web组件处理时发生在ServletRequest对象中的属性被增加、删除、替换时发生ServletRequestListenerServletRequestAttributeListenerHttpSessionAttributeListenerHttpSessionBindingListenerServletContextAttributeListenerHttpSessionListenerHttpSessionActivationListener7.过滤器
一个中间组件,用于拦截源数据和目的数据之间的消息,过滤二者之间传递的数据,过滤从客户端传递到服务器端的请求和响应。
过滤器可以组成一个过滤器链。链中的每个过滤器负责特定的操作和任务,客户端的请求和响应在这些过滤器之间传递。
8.JSP
Servlet的缺陷:编码、部署和调试任务繁琐,生成动态网页繁琐,不利于项目分工,采用JSP技术编写动态页面就能,由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件。JSP页面的扩展名必须为.jsp,部署在Web工程的根目录下,Web容器第一次接收到对某个JSP页面的请求后,首先自动将该JSP页面翻译为Servlet代码,Tomcat将翻译后的代码放在Tomcat安装目录的/work子目录下,也可以说所有JSP页面本质上就是Serlvet程序,但是不需要配置web.xml,所见即所得,很好的弥补了上述中Servlet的缺陷。
8.1.JSP运行机制:
1.页面翻译2.页面编译3.类装载4.实例化
5.初始化方法是jspInit()6.服务方法是_jspService()7.销毁方法是jspDestroy()
JSP生命周期完全遵循Servlet生命周期从15步只会在JSP页面第一次访问的时候才执行被实例化后就像Servlet一样一直存在于容器中了。
8.2.JSP语法和语义
JSP网页主要由元素(Element)和模板数据(TemplateData)两个部分组成,模板数据是JSP的静态部分WEB容器不处理,元素则是必须经由WEB容器解释,元素都是以XML做为语法基础,并且大小写要一致
8.2.1.JSP脚本元素
声明定义变量或者方法。在声明部分出现的语句,JSP在被编译成java文件后声明部分为成为这个java当中的成员变量或者方法
Scriplet在Scriplet部分出现的语句,JSP在被编译成java文件后Scriplet部分的代码会被置放于_jspService()方法内部
脚本表达式等同于out.println();8.2.2.JSP注释
1.JSP注释,其语法结构为:2.HTML注释:3.Java代码注释
8.2.3.JSP指令
提供整个JSP页面的相关信息,用于JSP页面与容器之间的通信,在JSP中,有三种类型的指令:
1.page指令为当前页面提供处理指令
2.include指令用于把另一个文件包含在JSP中3.taglib指令指定如何包含和访问自定义标签库
8.2.4.JSP标准动作
1.动作是一种动态的包含
2.动作将客户端所发出来的请求,从一个JSP网页转发到另一个
JSP页面
3.得到或者创建一个JavaBean对象
8.2.5.JSP隐式对象
对象名requestresponse描述代表与请求相关的HttpServletRequest对象代表与响应相关的HttpServletResponse对象作用域requestpagepagesessionapplicationpagepagepagepagepageContext代表封装请求某个JSP页面时请求环境的pageContext对象session代表特定用户请求会话的HttpSession对象。该对象只有在JSP页面参与一个HTTP会话时才有意义application代表Web应用程序的ServletContext对象outconfigpage代表与响应输出流相关的JspWriter对象代表JSP页面的Servlet相关的ServletConfig对象等于Java编程语言中的this变量exception代表JSP页面抛出的Trowable对象。这个对象只能在JSP错误页面中使用9.JavaWeb开发模式
9.1.MVC模型
9.1.1.视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括MacromediaFlash和象XHTML,XML/XSL,WML等一些标识语言和Webservices.
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
9.1.2.模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
9.1.3.控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
三层架构即“表现层”,“业务层”,“持久化层”。表现层实现的代表作品是Struts框架,业务层实现的代表作品是Spring,持久层实现的代表作品是Hibernate。
9.2.MVC实现步骤
1.2.3.4.5.6.
定义一系列Bean来表示数据使用一个Servlet来处理请求在Servlet中填充Bean
在Servlet中,将Bean存储到请求、会话或者Servlet上下文中将请求转发到JSP页面
在JSP页面中,从Bean中提取数据
10.JSTL与EL表达式
10.1.EL表达式解释
${person.dog.name}这是一段EL表达式的语法,这样的一句EL表达式如果翻译成JAVA语句的话:
getAttribute(“person”).getDog().getName();
对应上面的EL表达式来看person就是从某个作用域中取出一个键的值是”person”的绑定的对象再调用绑定的对象的getDog()方法获取到Dog对象,再调用获取到的对象的getName方法获取到name属性的值
10.2.在EL表达式中的隐式变量
类别JSP作用域隐式变量名pageContextpageScoperequestScopesessionScopeapplicationScope描述用来访问JSP的隐式对象与page作用域属性的名称和值相关联的Map类与request作用域属性的名称和值相关联的Map类与session作用域属性的名称和值相关联的Map类与application作用域属性的名称和值相关联的Map类请求参数paramparamValues包含请求参数字符串的Map类包含请求参数字符串数组(String[])的Map类包含请求头字符串的Map类包含请求头字符串数组(String[])的Map类按名称存储请求附带的cookie的Map类请求头headerheaderValuesCookie
cookie
友情提示:本文中关于《java web总结》给出的范例仅供您参考拓展思维使用,java web总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《java web总结》
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/522634.html
- 上一篇:会计实训总结
- 下一篇:JAVA与web数据课程总结