java web总结

在学习jsp之前让我们来了解一下java web的工作原理:客户端同过http协议向服务器发送请求,服务器通过你的请求响应客户端,响应包括状态行,响应头,空行,信息体;请求包括:请求行,请求头,空行,信息体;最早的web服务端程序有一个很大的缺陷,就是不能动态的向客户端输出页面,这样就不能实现数据的快速更新,最早的解决方案就是:CGI编程来实现动态网页的产生;但CGI的最的缺陷就是每个客户请求都产生一个新的进程,这样当有很多的客户来访问的时候,服务器的内存消耗将很大,浪费资源;
人们认识到CGI的缺陷后jsp+Servlet就做为了服务器端网页编程的重点,这种处理方式是一个客户端请求只产生一个线程,这样就能够很好的节约内存减少消耗;那么Servlet将成为服务器端编程的核心;下面我们来介绍一下什么是:Servlet;实际上Servlet就是运行在web容器中的java程序;Servlet的强大来自与java技术平台的支持以及Servlet与Servlet容器的交互,Servlet的常用api:上层接口:ServletConfig ,Servlet,GenericServlet,HttpServlet,掌握Servlet的生命周期对我们理解Servlet很有帮助,Servlet的生命周期可以分为:1.容器装载并实例化Servlet,2.容器触发init()方法装载资源,3.请求到达服务器调用Service()方法,4.容器调用destroy()方法;Servlet的部署:编码,部署Servlet 配置,运行等几个阶段;既然客户端发送请求到服务器,服务器通过响应在回到客户端,那么我们来看看服务器怎么来响应:服务器的响应可分为:状态行,响应头,空行,信息体;状态行有包括:Http版本,响应码(5个等级),响应描述;设置状态码的方法:setStatus(),设置响应头:setHeader()
,setContentType(),addCookie(),getWriter()得到向客户端输文本对象出流,getOutputStream()得到二进制输出流,设置请求重定向:sendRedirect();客户端的发请求可以分为:请求行,请求头,空行,信息体;请求可以分为8中方式;常用的有get和post,获取请求的方法:getMethod(),getRequestURI(),getRequestURL(),getQueryString(),等方法;获取请求头:getHeader();获取表单数据:getParameter();请求转发:Request。getRequesrDispatcher("").forward(request,response);
以为http的连接是无状态的连接,所以当请求到达服务器,服务器响应后连接就断开,这样请求的数据就不能保存下来,所以就有作用域对象,作用域对象可以分为三种,ServletContext,HttpSession,ServletRequest,有对象作用域那么就有事件监听器:ServletContext的事件监听器:ServletContextListener()上下为对象被创建和销毁触发该事件,ServletContextAttributeListener上下文对象属性增加,删除,替换时触发;ServletRequest和ServletContext一样,HttpSession:HttpSessionListenter ,HttpSessionActivationListener表示HttpSession被创建,无效超时的时候发生;HttpSessionAttributeListener,HttpSessionBindingListenter 表示:HttpSession的属性被增加删除,销毁的时候发送;以为web开发是无状态连接所以,当一个客户请求过后在请求服务器会当成一个新的请求,这样才能确保当一个客户请求过后将客户的这种会话状态保存下来,我们有4中解决办法:A:隐藏字段当一个客户发出请求,为该客户添加一个标识,B:Cookie客户发送请求一些数据以键值的形式保存到客户端,当同一客户再次访问是会将Cookie发送到服务器,服务器通过Cookie的值来判断你是否登陆过,C:Sessions当一个请求到达服务器服务器会产生一个Sessionsid做为标示,服务器会以Cookie的方式将Sessionsid保存到客户端,当再次访问的时候回将Sessionsid发送到服务器,D:URl重写当客户禁用Cookie我可以使用URL重写来解决问题,过滤器的概念:过滤器是源数据和目标数据之间的一个中间组件,过滤器的使用步骤:编码,编译,部署,运行;过滤器的常用api:Filter,FilterConfig,FilterChain;过滤器的配置;使用请求和响应包装器意思就是你可以将请求和响应包装成你自己想要的东西;重写一些方法就可以实现;
  jsp的基础:由于用Servlet产生一个动态页面还是一个很复杂的工作,并且也不利于在一个短时间来开发一个很好的项目;于是sun公司推出了jsp技术很好的解决了这一难题,我们来了解一下jsp的生命周期:翻译,编译,类装载,类实例化,初始化,服务,销毁;jsp网页有元素和数据两个部分组成,模板数据是jsp的静态部分,它是web容器不处理的部分;会直接发送到客户端,而元素必须有web容器解释;jsp元素包括:脚本元素,指令,标准动作;jsp中的三种不同类型的脚本元素:Scriptlet,脚本表达式,声明,jsp指令主要是页面和容器之间的通信,jsp标准动作用于页面与页面或者页面与组件之间的通信;
我们知道最初的web开发程序技术是Servlet,然而Servlet的缺陷使得web程序开发繁琐并且不利于分工,为了弥补这一缺陷,sun公司推出了jsp作为解决方案使得Java web开发轻松起来,但是理想和现实总是有差距,开发人员有走到了极端:完全抛弃了Servlet,但这样一来问题有来了,在一个jsp页面中既有HTML代码,又有Java代码,不适应大项目的开发,使得业务流程不能很好的处理,其次就是代码的可读性很差一个会java代码的人也许读不懂一个jsp页面,一个会HTML代码的人也有可能读不懂这样一个jsp页面,这样使得开发人员必须会java又要会HTML,java高手不一定有美感,也许做出的页面就很不乐观,HTML代码人员天生具有美感但不会java代码那么这个系统将失败,为了使得HTML代码和java代码的分离就有了模式开发java web项目,这样就使得美工和后台代码人员的分工很明确。
       java web开发的javaBean模式:在一个javaBean中来完成业务的操作,在jsp页面上只做显示数据等作用从而使得页面和业务逻辑分开
,这样就设计到jsp页面和javaBean通信。1.<jsp:userBean id="beanName" scope="page|request|session|application"
class="className"/> ,得到javaBean的属性值:<jsp:getProperty name="beanName" property="propertyname"/> ,设置javaBean的属性值:
<jsp:setProperty name="BeanName" property="*"/>
java web开发模式2:mvc(模型-视图-控制)开发模式,是20世纪80年代为Smalltalk-80编程语言发明的一种软件设计模式,是一种分
离业务与表现界面的设计方法。M部分负责管理系统业务数据,V显示界面,C负责与用户的交互。mvc开发模式在java web中采用
Servlet+jsp+JavaBean的技术实现,其中Servlet充当控制器,jsp视图,javaBean充当模型角色。mvc开发java web的步骤:
1.定义一系列的Bean对象
2.使用Servlet处理请求
3.在Servlet中填充Bean
4.在Servlet中将Bean存储到Request,Sessions,Servlet上下文中
5.将请求转发到jsp页面
6.在jsp页面中。从Bean中提取数据
在java web中用mvc开发模式中知道Bean在开发中将扮M的角色,但随
知而来的有是新问题,在javaBean中的属性只能是基本的数据类型,不能将一个对象作为一个Bean的属性
,这样jsp标准动作是不能得到我们想要的值了,最佳的解决方案就是:jsp el(即表达式语言);
EL表达式:&{person.name}
  EL表达式的隐试变量:pageContext ,pageScope, requestScope, sessionScope,
applicationScope, param ,paramValues, header ,Cookie
EL运算符:和java的一样
EL函数用法的步骤:
   1.创建静态方法;
   2.创建标记库描述文件(TLD)
   3.更改部署描述文件
   4.在jsp内访问EL函数
jsp自定义标记库与标记库JSTL:javabean的使用可以将业务逻辑和代码分离,然而javaBean存在
先天不足:它只是可复用组件,独立与运行环境而包装了一些数据和业务逻辑功能,无法获的运行环境信
息无法与jsp页面进行更深层次的交互,为了解决这个问题引入了jsp自定义标记机制。JSTL标准标记库:
core,xml,I18N,Function ;通用标记:<c:catch>,<c:out> <c:set> <c:set> <c:remove> <c:if>
<c:choose> <c:forEach> <c:forTokens> <c:url> <c:import> <c:redirect>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值