javaweb工作原理总结文档格式.docx
- 文档编号:19863631
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:16
- 大小:26.25KB
javaweb工作原理总结文档格式.docx
《javaweb工作原理总结文档格式.docx》由会员分享,可在线阅读,更多相关《javaweb工作原理总结文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
2XX:
表示成功
3XX:
表示重定向
4XX:
表示客服端错误
5XX:
表示服务器错误
1.2
Web服务器的缺陷是只能向用户提供静态网页内容。
1.3
服务器端网页编程就是web服务器创建动态服务器端内容的过程。
1.3.1
服务器端网页编程出现得最早的技术就是CGI,它的缺点就是每次请求一个CGI资源,将在服务器上创建一个新的进程,并且通过标准输入和环境变量将信息传递给该进程。
还有微软公司的ASP和ASP.NET技术
Java运用的是servlet/JSP技术
Servlet主要用于在服务器端产生动态内容。
它在服务器上主要的工作是向客户端读取和发送显示数据和隐式数据,以及在读取和发送中间生成结果。
PHP技术,它的特点是能快速创建小网站,但不能创建大型网站。
1.3.2
web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。
一个服务器可以多个容器。
Web容器对Servlet的支持包括:
通信支持,生命周期管理,jsp支持和处理安全性。
一、B/S模式的优点和缺点
B/S结构的优点
(1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)、业务扩展简单方便,通过增加网页即可增加服务器功能。
(3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
(4)、开发简单,共享性强
B/S模式的缺点
(1)、个性化特点明显降低,无法实现具有个性化的功能要求。
(2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
(3)、页面动态刷新,响应速度明显降低。
(4)、功能弱化,难以实现传统模式下的特殊功能要求。
二、C/S模式的优点和缺点
C/S模式的优点
1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。
2.操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
3.C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。
C/S模式的缺点
1.需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
2.兼容性差,对于不同的开发工具,具有较大的局限性。
若采用不同工具,需要重新改写程序。
3.开发成本较高,需要具有一定专业水准的技术人员才能完成。
Web容器的功能是网络连接管理,会话管理等功能都由容器实现。
Servlet
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机
Servlet的方法分为以下几个类。
1.init()方法;
一个servlet在服务器上最多只会驻留一个实例。
所以说第一次调用Servlet时,将会创建一个实例。
在实例化的过程中,HttpServlet中的init方法会被调用。
因此将一些初始化代码放在该函数内。
2.doGet()/doPost()/service()方法
Servlet有两个处理方法:
doGet()和doPost()。
doGet()在以get方式请求Servlet时运行。
常见的get请求方式有链接、get方式表单提交,直接访问Servlet。
doPost()在以post方式请求Servlet运行。
常见的post请求为post方式表单提交。
事实上,客服端对Servlet发送一个请求过来,服务器端将会开启一个线程,该线程会调用service()方法,service()方法会根据收到的客服端的请求类型来决定是调用doGet()还是doPost()。
但是一般情况下不用覆盖service()方法,使用doGet()与doPost()方法,同样可以达到处理目的。
3.destroy()方法
destroy()方法在Servlet实例消亡时自动调用。
在web服务器运行Servlet实例时,因为一些原因,Servlet对象会消亡。
但是在此Servlet消亡之前,还必须进行某些操作,比如释放数据库连接以节省资源等,这个时候就可以重写destroy()方法。
Servlet中如何获得内置对象的方法:
1.获得out对象
Importjava.io.PrintWriter;
…..
PublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
PrintWriterout=response.getWriter();
//获得out对象
}
在默认情况下out对象是无法打印中文的。
因为out输出流中有中文却没有设置编码。
解决这个问题可以讲doGet代码改为:
response.setContentType(“test/html;
charset=gb2312”);
2获得request和response对象。
这两个作为参数传给了doGet()或doPost()方法中。
3获得session对象。
Session对象对应的是HttpSession接口。
HttpSessionsession=request.getSession();
将session当成session对象来使用。
4获得application对象
application对象对应的是ServletContext接口
ServletContextapplication=this.getServletContext();
将application当成application对象来使用。
可以使用application实现服务器内跳转。
由于Servlet和JSP的同质性常用的Servlet内跳转有两种:
(1)重定向
response.sendRedirect(“URL地址”);
(2)服务器内跳转
RequestDispatcherrd=application.getRequestDispatcher(“URL地址”);
rd.forward(request,response);
设置参数:
Web.xml文件有两种类型的参数设定。
1设置全局参数,该参数所有的Servlet都可以访问。
<
context-param>
param-name>
参数名<
/param-name>
param-value>
参数值<
/param-value>
/context-param>
(3)设置局部参数,该参数只有相应的Servlet才能访问
servlet>
servlet-name>
Servlet名称<
/servlet-name>
servlet-class>
Servlet类路径<
/servlet-class>
init-param>
/init-param>
/servlet>
获取参数:
获取全局参数的方法是:
application.getInitParameter(“参数名称”);
获取局部参数的方法是:
this.getInitParameter(“参数名称”);
注意:
此处的this是指Servlet本身。
Servlet基础
一、什么是Servlet?
1、是运行在Web服务器或应用服务器上的Java程序
2、是在Web上创建动态内容的有效而强大的解决方案
3、有容器来管理生命周期与Web服务器交互
4、由sun规范了其功能
二、Servlet的生命周期
1、在整个服务器运行过程中,一个Servlet只有一个对象
2、这个对象在第一次请求来的时候产生,所有对相同Servlet的请求都是访问同意对象
3、Servlet不是线程安全的
4、Servlet对象会在服务器关闭或重新加载的时候被销毁
5、方法调用init()---service(doget/dopost)---destory
解释:
init():
初始化
重写service()方法:
真正接受请求的,了解生命周期,判断请求类型(get/post),在调用doget()或dopost()方法
destroy():
servlet销毁方法
注意:
Servlet在第一次请求来的时候产生对象这不是绝对的,可以在web.xml里面配置,在服务器启动的时候产生对象并告诉产生的顺序
三、控制生命周期(出现的顺序)
在web.xml文件中servlet元素中添加子元素<
load-on-startup>
自然数(改变顺序)<
/load-on-startup>
四、参数的初始化
在web.xml文件中servlet元素添加子元素<
/init-param>
<
(需要注意添加顺序),写在<
之前
例:
encoding<
/param-name>
param-value>
utf-8<
/param-value>
五、Servlet的架构体系
Servlet(接口)ServletConfig(接口)
GenericServlet(抽象类)
HttpServlet
六、Request对象
1、什么叫request对象:
客户端请求对象,对象里面封装了当次客户请求的所有
2、用request对象来取得请求的参数req.getParameter(Strings)
3、参数的传递格式:
url?
xx=xx&
yy=yy.....
4、表单提交的时候表单控件参数就是name=value
5、处理中文乱码
1)、post方式请求设置页面以及request对象的字符编码级utf-8setCharacterEncoding("
utf-8"
)
2)、get方式配置服务器端口元素的字符编码URIEncoding="
七、通过流取到动态的网页
resp.setCharacterEnconding("
)//乱码
resp.setContentType("
text/html;
charset=utf-8"
)//设置响应格式里的消息体(乱码)
八、一个键获取多个值:
String[]str=req.getParameterValues("
che"
);
for(Strings=str){
System.out.println(s+"
========"
}
总结:
1、Servlet的配置
2、初始化参数的配置以及获取<
init-parm>
3、Servlet的对象创建顺序的配置<
load-on-start>
4、HttpServletRequest对象的方法:
getParameter(),getParameterValues(),setCharacterEnconding()
5、response对象的方法:
setContentType(),setCharacterEnconding(),getWriter()
Session会话
Session表示通话,会话,对话期间,对谈时间的意思。
Session:
服务器端的一块内存,可以和服务器对应,每个客户端都有自己独立的一个区域。
Session里面所有的方法都是键值对
Session里面的内容并不是永无止境的保存,它会有一定的时间限。
Session课堂总结:
session会话:
就是客户端(浏览器)对服务器的一次会话范围,也就是在服务器端的一块内存区域,一个客户端对应自己的一块内存区域,可以向这块内存里面存取数据。
数据的格式就是键值对。
(key的类型只能是String,value的类型是Object)
①:
HttpSessionsession=req.getSession();
//从服务器得到session对象
session.setAttribute("
User"
"
你好"
//把session对象放进去
②:
Objecto=session.getAttribute("
//把session对象取出来
③:
HttpSessionsession=req.getSession().removeAttribute("
//删除,移出session对象
④:
session.setMaxInactiveInterval(10);
//设置请求的时间(秒)多少秒后就取不到了
ServletContent
ServletContent:
Servlet上下文,与session用法相同
课堂总结:
请求转发:
RequestServletreq.getRequestDispatcher("
s2"
).forward(req,resp);
请求转发(服务器端跳转):
不会结束当次请求,而是直接在服务器内部把这一次请求进行跳转。
request范围一样,可以通过request范围传递数据。
重定向:
resp.sendRendriect("
重定向(客户端跳转):
结束当次请求,让客户端发起新的请求去访问。
request范围不是一般在这一次请求结束的时候,为了导致后台的混乱时使用。
三大范围:
1、request:
当次请求范围,只能在一次请求的过程当中存取数据,一般用来数据的简单传递。
请求开始时产生,请求结束时消失(一次请求中)。
2、session:
会话,用来保存客户端的状态,只是服务器端的一块内存区域。
每个客户端都有自己的一块内存区域,相互之间不冲突。
(第一次请求时产生,可以控制超时时间)。
3、ServletContent:
servlet上下文,整个服务器端最大的一块内存区域,所有的Servlet共享,保存全局性的数据。
(开始时就有,结束时消失)
过滤器:
Filter
filter概念:
拦截客户端到服务器端的请求(过滤),可以帮助我们在执行具体业务之前进行请求的过滤。
常用来做权限,分类,以及一些通用项目设置。
书写方式:
要让自己的类成为一个过滤器(拦截器)去实现filter接口,要让filter起作用就必须在web.xml里面配置。
生命周期:
在服务器启动的时候创建对象,整个运用过程中只有一个对象服务,服务器重新加载或者关闭的时候销毁。
初始化参数:
跟servlet的初始化一样
1、页面上资源访问,比如图片,音乐,视频等等都是在向服务器发送请求,所以注意拦截器拦截这请求的时候会让资源不能访问。
2、拦截器只能够拦截客户端发送到服务器端的请求,不能够拦截服务器内部的跳转。
cookie:
服务器向客户端发送的一个文本信息,并且保存在客户端。
文本信息的格式是key-value,最大不能超过4k.
可以通过request对象里面把当前请求的客户端的所有cookie拿到,可以通过response对象发送cookie到客户端。
cookie的生命周期通过设置存在的时间长度来决定。
session就是通过cookie实现的,每个session对象都有一个id值(唯一的),这个id会发送到浏览器的cookie里面,每次浏览器请求服务器,服务器都会把这个id从cookie取出来,然后再去匹配session对象的id,这样来确定到底当前的浏览器该使用哪一个session对象。
session比cookie更安全。
通常情况下都会选择使用session.cookie不安全,一般用来保存一些不是特别关键的数据,可以减少服务器的压力。
因为session是服务器端的内存。
cookie是客户端保存。
一旦客户禁用了cookie,这个时候session就会失效,我们可以通过URL重写来让session继续生效。
URL重写就是改变你原来的访问地址和URL,让URL上面跟上sessionID作为参数来传递
监听器
一、监听器:
在servlet里面用来监听三大范围对象的事件,提供了8个借口来针对3个对象的事件监听。
二、事件触发主要有两大类型:
1、对象自身的生命周期(产生,销毁)
2、对象范围内数据的变化(添加,移除,替换)
三、三大对象对这两大类型都有自己的接口:
ServletContextListenerServletRequestListener
ServletContextAttributeListenerServletRequestAttributeListener
HttpSessionListener
HttpSessionAttributeListener
四、session对象还有另外两个自己的监听:
1、和某个特定的类型的对象绑定的监听器接口(只监听该类型的对象被添加或者销毁的事件)。
HttpSessionBindingListener
2、监听session被钝化或者激活的一个监听接口(了解)HttpSessionActivationListener
所有的监听器都需要在web.xml里面注册了才能生效,只有HttpSessionBindingListener监听器不需要注册。
第八章:
JSP基础
一、JSP就是服务器端的动态网页技术,就是能够在HTML网页上面书写java代码。
二、JSP的工作原理:
jsp在被访问的时候会被翻译成一个servlet(处理jsp翻译的servlet类)类,然后编译成class文件,然后产生servlet对象来接收请求。
(jsp本质就是一个servlet,在服务器里面都有jsp引擎)
3、JSP的生命周期:
它只比servlet多一点“翻译”(生命周期和servlet一样)
4、JSP的基本语法:
①、<
%%>
它们之间能够书写Java代码,这里的代码就相当于在翻译成德servlet的service方法内部(局部变量)
②、<
%!
%>
它们之间能够书写Java代码,这里的代码就相当于在方法的外面类的里面(成员变量)
③、<
%=%>
等号后面可以跟一个变量或者一个具体的值相当于、、、
五、JSP内置对象:
jsp已经准备好的可以直接使用的对象(9个)
①、request请求对象
②、response响应对象
③、pageContext当前页面的上下文,里面包含了当前页面的所有数据信息
④、page当前页面的对象指针
⑤、configservlet参数(servletConfig)
⑥、out输出流(PrintWriter)
⑦、session会话
⑧、application服务器上下文(servletContext)
⑨、excption异常处理对象(throws,excption)
六、三大指令
page(页面指令)
taglib(引入标记库)
include(静态包含)
七、动作
include(动态包含)
forward(请求转发)
静态包含和动态包含的区别
1、静态包含是在编译期执行包含这个步骤,把包含的页面的所有的代码直接拿到本页面的代码里面来,所有两个页面最终只会生成一个Java类,也就是说所有的属性,对象都共享。
2、动态包含会在执行期间动态的把包含页面的信息拿到本页面来,它们还有独立的两个页面会生成两个类,它们各自使用各自的参数,对象。
向本页面传递的参数在包含页面也能够取到。
但是它们的request对象不是同一个。
标记库
EL表达式:
sun公司定义一套方便处理Java表达式的语法,通常
用来在JSP进行范围取值。
语法:
${}
1、在对对象取值的时候一定要有get方法,而且后面的
那个名称不是属性名,而是get方法后面的名称(首
字母小写)
2、取值的顺序是:
pageContext、request、session、
applicaton
3、可以对集合、数组、Map进行取值,能够进行逻辑
表达式,关系表达式
JSTL:
sun公司定义一套JSP标签库,用来处理业务逻辑,核心标签
是c
怎么引入标签
会使用逻辑判断语法,以及迭代语法,设置语法,了解一下格式
化与函数
判断为空,用==(在EL表达式里)
MVC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaweb 工作 原理 总结