公文素材库 首页

Java Web总结

时间:2019-05-28 03:19:14 网站:公文素材库

Java Web总结

JavaWeb

Web访问原理客户

1输入网址5页面内容HTTP超文本协议2发出请求客户端浏览器4返回结果服务器3处理请求浏览器只能读取Html文本所以服务器返回的只是Html服务器动态生成Html页面服务器工作原理

服务器产生动态页面的方法和技术:

实现动态输出HTML页面时由运行在服务端的CGI程序产生的,CGI根据不同客户的请求输出相应的HTML页面,然后Web服务器在把这个静态页面返回哥浏览器作为客户端的响应。

CGI的操作过程

服输出生成Html

务页面

请求运行某

个CGI程序

CGI程序(生成所需的

Html文件)数据库读取数据和文件注意:CGI程序在服务器执行,并可以和Web服务器在同一个主机上。CGI可以访问存储数据库中的数据和其他系统中的文件。

CGI的不足:

需要为每个请求都启动一个操作CGI的系统进程,开销很大。需要重复编写出来网络歇息的代码及进行编码,非常耗时。

JavaServlet

JavaServlet改进的CGI

思想:CGI程序为每个请求都运行一个CGI程序的系统进程开销很大,Servlet技术只需要启动一次服务进程而且只需加载一次JVM,之后这个JVM在加载另外的类。好处:

只需启动一个操纵系统进程以及加载一个JVM,大大降低了系统的开销如果有多个请求需要做同样的处理的时候,这时只需加载一个类。所有动态加载的类可以实现对网络协议以及请求解码的代码共享

Servlet能够直接额Web服务器交互,能够各个程序之间共享数据,数据库连接池之类

的功能很容易实现

Servlet类重复使用PrintWriter.println();方法来输出相应的HTML页面,以达到动态生成HTML页面的效果。

注意:所有的JavaWeb服务器都应该遵守JavaServletAPI(运用程序接口)的编码标准。Servlet的缺点:

Servlet生成网页的方法是在Java类中嵌入HTML标签和表达式,所以修改起来很麻烦。

JSP基本原理

JSP:Servlet的模板

JavaServerPages(JSP)是一种实现静态HTML和动态HTML混合编码的技术,是ServletAPI的一个扩展。

JavaBean返回的数据JSP页面访问原理

服务器端

浏览器请求调用某个JavaBean组件读取数据库和文件JavaBean(基于Java组件)返回HTML页面数据库服务器存储的JSP文件(后缀.jsp)相应请求JSP基本原理:Web容器出来JSP文件步骤翻译阶段编译阶段请求处理阶段会话会话请求会话翻译转换JavaServlet实现代码(.java)编译JavaServlet实现类(.class):二进制文件激活请求准备JavaServlet实现对象Java编译工具Java编译工具JSP容器响应翻译阶段:JSP文件首先被Web容器中的JSP引擎转换成Java源代码也是就是通过Servlet引擎

编译阶段:JSP文件所翻译成的Java源代码会被翻译成可执行的二进制文件

请求阶段:当容器接受了客户端的请求后,就执行前面已经编译成的二进制的JSP文

件,容器吧生成的页面反馈给客户进行显示。

注意:一旦容器把JSP文件翻译和编译之后来自客户端的每一个JSP请求就可以重用这个编译好的二进制文件,没有必要把同一个JSP进行翻译和编译。也就是说如果一个JSP文件是第一次请求要经历上述三个阶段,如果一个JSP文件之前已经就被请求过就没必要经历翻译和编译阶段,直接使用编译好的二进制文件。

扩展阅读: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分钟。

15

5.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/522668.html
相关阅读
最近更新
推荐专题