文档库 最新最全的文档下载
当前位置:文档库 › JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

JavaWeb三大组件

1Servlet

1.1生命周期方法

1.1.1void init(ServletConfig):

加载和实例化:当客户端发送一个请求时,Servlet容器(Tomcat)会查找内存中是否存在Servlet实例,如果不存在,就创建一个Servlet 实例。如果存在Servlet实例,就直接从内存中取出该实例来响应请求

初始化:初始化Servlet时,可以设置数据库连接参数,建立JDBC 连接,或是建立对其他资源的引用。初始化阶段,init()方法被调用1.1.2void service(ServletRequest request, ServletResponse response):Servlet初始化后,就处于响应请求的就绪状态1.1.3void destory():销毁由容器完成,销毁调用Servlet的destroy()方法

1.2特性

1.2.1单例,只创建一个对象,线程不安全,效率是高的1.2.2Servlet类我们来写,对象由服务器创建,并且由服务器调用其中的方法

1.3动态资源,处理请求

1.4配置

1.4.1正常是第一次访问服务器时创建servlet,启动时就完成创建

非负整数

1.4.2

访问路径中使用通配符

/*匹配所有

*.do匹配扩展名是.do的所有路径

/servlet/*匹配/servlet路径候的所有的路径

1.5创建servlet

1.5.1实现javax.servlet.servlet接口

1.5.2继承javax.servlet.genriticservlet类

1.5.3继承javax.servlet.http.httpservlet类型

httpServletRequest

String getParamater(String paramaterName): 获取请求参数

String geMethod():获取请求方法

String getHeader(String headerName):获取请求头

void setCharacterEncoding(Encoding):设置请求字符编码httpServletResponse

PrintWriter getWriter():获取字符响应流

ServletOutputStream getOutputStream():获取字节响应流

void setCharacterEncoding(String encoding):获取响应编码

void setHeader(String name,String value): 设置响应头

void getContextType(String contextType): 获取响应头类型

void sendError(int code, String errorMesg): 向客户发送错误响应码和错误信息

1.6Session

1.6.1Cookie

cookie是由服务器创建的,浏览器第一次访问,服务会创建一个cookie给浏览器带回去。当浏览器第二次访问时,把cookie带给服务器,服务器用来跟踪浏览器的状态

cookie是键值对组成

cookie的头设置

浏览器发送给服务器的头:Cookie

服务器发送给浏览器的头: Set-Cookie

Cookie的发送和接收

Servlet发送

Cookie cookie = new Cookie("aaa", "AAA") response.addCookie("aaa")

Servlet接收

Cookie[] cookies = request.getCookies() if(cookies != null){ for( Cookie cookie : cookies){ cookie.getName(); cookie.getValue(); } }

Cookie的细节

Cookie的maxAge

cookie.setMaxAge(-1) : 只在内存中存活,关闭浏览器cookie就会消失cookie.setMaxAge(60*60): cookie能够在硬盘中存活1个消失

cookie.setMaxAge(0): 表示这个cookie作废,最终这个cookie在内存和硬盘上不存在

Cookie的path

Cookie的Domain:二级域名

Cookie的保存中文,需要对中文编码解码

1.6.2Session

HttpSession的作用

会话跟踪

域功能

登入信息回现

原理

Session依赖Cookie

浏览器第一次访问服务器时,服务器会创建一个session对象,同时创建一个cookie,把sessionid放在cookie中给浏览器带回去,只要session还存活,浏览器还存在,下次浏览器再次访问时,浏览器就会通过cookie把sessionID返回给服务器,只要浏览器不关闭,下次就可以共享session中的数据了

由于服务器端创建的cookie只能在浏览器中存活,如果客户关闭浏览器,请求中就没有sessionId,再次访问需要重新创建sessionid放在cookie中给浏览器带回

如果Session超过了最大活动时间,失效,此时即使没有关闭浏览器。浏览器的提供的SessionID也没有用了

设置Session有效活动时间

config>30 Session相关API

String # getId() : 获取SessionId

void setMaxInactiveInterval(time) : 设置session最大不活动时间,默认是30分钟

int getMaxInactiveInterval():获取session可以的最大不活动时间(秒),默认为30分钟。当session在30分钟内没有使用,那么Tomcat会在session池中移除这个session

long getCreationTime():返回session的创建时间,返回值为当前时间的毫秒值

long getLastAccessedTime():返回session的最后活动时间,返回值为当前时间的毫秒值

void invalidate():让session失效!调用这个方法会被session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session,并在响应中给客户端新session的sessionId

boolean isNew():查看session是否为新。当客户端第一次请求时,服务器为客户端创建session,但这时服务器还没有响应客户端,也就是还没有把sessionId响应给客户端时,这时session的状态为新URL重写

session依赖Cookie,这是因为服务器需要把sessionId保存到客户端。如果用户的浏览器关闭了Cookie功能,那么session不能使用了!还可以在浏览器关闭了Cookie后使用URL重写的方法保存sessionId,这需要在每个URL后面都加上sessionId!这样用户的请求中就包含了sessionId,服务器就可以通过sessionId找到对应的session对象了1.7ServletContext

1.7.1获取

ServletConfig getServletContext()

服务器启动时会创建一个servletcontext对象,它负责在应用程序间传递数据

GenericSevlet getServletContext()

HttpSession getServletContext()

ServletContextEvent getServletContext()

1.7.2域对象功能:所有域对象都有存取数据的功能

void setAttribute(String name , Object value)

Object getAttribute(String name)

void removeAttribute(String name)

Enumernation getAttributeNames()

1.7.3方法

获取初始化参数的方法

String getInitParameter(String name)

获取资源相关方法

获取绝对路径

this.getServletContext.getRealPath("/a.txt")

this.getServletContext.getRealPath("/WEB-INF/b.txt")

获取资源流

InputStream # this.getServletContext.getResourceAsStream("/a.txt")

InputStream # this.getServletContext.getResourceAsStream("/WEB-INF/b.txt")

获取指定资源下所有资源路径

Set # this.getServletContext.getResourcePaths("/WEB-INF")

InputStream # this.getClassLoader().getResourceAsStream("a.txt")======相对于classes文件目录

InputStream # this.getClass().getReasourceAsStream("a.txt")=======相对于.class文件目录

InputStream # this.getClsss().getReasourceAsStream("/a.txt")========相对于classes文件目录

1.8Request

1.8.1处理字符编码问题String name = request.getParameter("username") byte[] bytes = name.getBytes("ISO-8859-1") name = new String(bytes, "utf-8")

1.8.2request域方法

1.8.3request获取请求参数

1.8.4request获取请求表头的方法

1.8.5request其他方法

String # getMethod() : 获取请求方法

void # setCharacterEncoding("utf-8") : 设置请求编码

String # getContextPath() : 获取上下文路径, /项目名

String # getRemoteAdrr() : 获取请求的IP地址

1.8.6请求转发; 一次请求,一次响应,留头不留体request.getRequestDispatcher("/BServlet").forword(request, response)

1.8.7请求包含: 一次请求,一次响应,留头留体requet.getRequestDispatcher("/BServlet").include(request, response)

1.8.8路径

客户端路径

服务器路径

1.9Response

1.9.1处理字符编码问题: response.setContextType("text/html",charset="utf-8")

1.9.2字符流: PrintWriter # response.getWriter()

1.9.3字节流: ServletOutputStream # response.getOutStream()

1.9.4response.fulshBuffer(): 刷新缓冲流

1.9.5响应码

302:重定向

response.sendRedirect("https://www.wendangku.net/doc/db2948094.html,")

200:响应成功

304: 找不到资源

1.10Servlet三个域对象

1.10.1request

1.10.2session

1.10.3application

1.11Javaweb四大域

1.11.1pageContext

这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据1.11.2session

一个会话只创建一个sessionContext对象

void session.setAttribute(String name, Object value)

Object session.getAttribute(String name)

void session.removeAttribute(String name)

1.11.3request

一次请求只创建一个requestContext对象

1.11.4servletContext

一个应用程序只创建一个servletContext对象

2Filter

2.1基本知识

2.1.1创建一个过滤器

自定一个过滤器需要实现Filter接口,实现接口中的方法

web.xml中配置

AFilter过滤器的全限定名AFilter

e><url-partten>拦截的资源

2.1.2过滤器的生命周期

void # init(FilterConfig) :

在服务器启动时会创建Filter实例,并且每个类型的Filter只创建一个实例,从此不再创建

在创建完Filter实例后,会马上调用init()方法完成初始化工作,这个方法只会被执行一次

void # doFilter( ServletRequest request, ServletResponse response, FilterChain chain)

参数FilterChain中有一个方法doFilter(ServletRequest,ServletResponse): 表示放行

这个方法会在用户每次访问“目标资源(pattern>index.jsp)”时执行

如果需要“放行”,那么需要调用FilterChain的doFilter(ServletRequest,ServletResponse)方法,如果不调用FilterChain 的doFilter()方法,那么目标资源将无法执行

void # destroy():

服务器会在创建Filter对象之后,把Filter放到缓存中一直使用,通常不会销毁它

一般会在服务器关闭时销毁Filter对象,在销毁Filter对象之前,服务器会调用Filter对象的destory()方法

2.1.3参数类型

FilterChain

参数FilterChain中有一个方法doFilter(ServletRequest,ServletResponse): 表示放行

这个方法会在用户每次访问“目标资源(pattern>index.jsp)”时执行

FilterConfig

ServletContext getServletContext():获取ServletContext的方法

String getFilterName():获取Filter的配置名称;与元素对应

String getInitParameter(String name):获取Filter的初始化配置,与元素对应

Enumeration getInitParameterNames():获取所有初始化参数的名称2.1.4多个过滤器执行顺序

filter1 start... filter2 start... index.jsp filter2 end... filter1 end... 2.1.5四种拦截方式

REQUEST

FORWARD

INCLUDE

ERROR

2.2案例

3Listener

3.1基本了解

3.1.1监听器是个接口,内容由我们实现

3.1.2必须要注册事件源上

3.1.3监听器中的方法会在特殊事件发生时被调用

3.2事件源

3.2.1javaweb域

ServletContext

生命周期监听

ServletContextListener

void # contextInitialized(ServletContextEevent sce): 创建servletContext时调用void contextDestroyed(ServletContextEvent sce): 销毁servletcontext时调用属性监听

ServletContextAttributeListener

void # attributeAdded(ServletContextAtrributeEvent evc): 添加属性时调用void # atrributeReplaced(ServletContextAttributeEvent evc): 替换属性时调用void # attributeRemoved(ServletContextAttributeEvent evc): 移除属性时调用HttpSession

生命周期监听

HttpSessionListener

void # sessionCreated(HttpSessionEvent se)

void # sessionDestroyed(HttpSessionEvent se)

属性监听

HttpSessionAttributeListener

void # attributeAdded(HttpSessionBindingEvent event)

void # attributeReplaced(HttpSessionBindingEvent event) void # attributeRemoved(HttpSessionBindingEvent event) ServletRequest

生命周期监听

ServletRequestListener

void # requestInittialized(ServletRequestEvent sre)

void # requestDestroyed(ServletRequestEvent sre)

属性监听

SevletRequestAttributeListener

void # attributeAdded(ServletRequestAttribteEvent srae) void # attributeReplaced(ServletRequestAttributeEvent srae) void # atrributeRemoved(ServletRequestAtributeEvent srac) 3.2.2javabean HttpSessionBindingListener

void # valueBound(HttpSessionBindingEvent hsbe):把java对象加入到session中会调用此方法

void # valueUnbound(HttpSessionBindingEvent hsbe): 当把监听对象从session中移除会调用此对象HttpSessionActivationListener

先不管HttpSessionActivationListener监听器接口,先来配置Tomcat钝化session的参数,把下面配置文件放到tomcat\conf\catalina\localhost目录下!文件名称为项目名称。

void # sessionWillPassivate(HttpSessionEvent se): 当对象感知要被持久化到硬盘中时调用此方法

void # sessionDidActiver(HttpSessionEvent se): 当对象感知要被从硬盘中加载到内存中(活化)时调用

3.3事件

3.3.1获取域对象

3.3.2获取属性名

3.3.3获取属性值

JAVAWEB经验总结之SERVLET API

基本类和接口 一、javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理的方法集。 Servlet接口的基本目标是提供生命期方法init()、service()和destroy()方法。 servlet接口中的方法 void init(ServletConfit config)throws ServletException在servlet被载入后和实施服务前由servlet引擎进行?次性调用。如果init()产生溢出UnavailableException,则servle退出服务。ServletConfig getServletConfig()返回传递到servlet的init()方法的ServletConfig对象void 果 String getServletInfo()返回描述servlet的一个字符串 void destory()当servlet将要卸载时由servlet引擎调用service(ServletRequest request, ServletResponse response)throws ServletException,IOException处理request对象中描述的请求,使用response对象返回请求结 二、javax.servlet.GenericServlet类(协议无关版本) GenericServlet是一种与协议无关的servlet,是一种跟本不对请求提供服务的servlet,而是简单地从init()方法启动后台线程并在destory()中杀死。它可以用于模拟操作系统的端口监控进程。servlet API提供了Servlet接口的直接实现,称为GenericServlet。此类提供除了service()方法外所有接口中方法的缺省实现。这意味着通过简单地扩展GenericServlte可以编写一个基本的servlet。 除了Servlet接口外,GenericServlet也实现了ServletConfig接口,处理初始化参数和servlet 上下文,提供对授权传递到init()方法中的ServletConfig对象的方法。 GenericServlet类中的方法 void destory()编飞组成单词“destory”的一个注册入口 String getInitParameter(String name)返回具有指定名称的初始化参数值。通过凋用config.getInitParameter(name)实现。 Enumeration getInitParameterNames()返回此serv]et已编码的所有初始化参数的?个枚举类型值。调用config.getInitParameterNames()获得列表。如果未提供初始化参数,则返回?个空的枚举类型值(但不是null) ServletConfig getServletConfig()返回传递到init()方法的ServletConfig对象ServletContext getServletContext()返回在config对象中引用的ServletContext String getServletInfo()返回空字符串 void init(ServletConfig config)throws ServletException在一实例变量中保存config对象。编写组成单词“init”的注册入口,然后调用方法init() void init()throws ServletException可以被跳过以处理servlet初始化.在config对象被保存后init(ServletConfig config)的结尾处自动被调用.servlet作者经常会忘记调用super.init(config) void log(String msg)编写注册servlet的入口.为此调用servlet上下文的log()方法.servlet的名字被加到消息文本的开头。 void log(String msg,Throwable t)编写一个入口和servlet注册的栈轨迹。此方法也是ServletContext中相应方法的一个副本。 abstract void service(Request request,Response response)throws ServletException,IOException 由servlet引擎调用为请求对象描述的请求提供服务。这是GenericServlet中唯一的抽象方法。因此它也是唯一必须被子类所覆盖的方法。 第1/7页

proe工程图配置文件.dtl常用选项及使用详解

工程图配置文件.dtl常用选项及使用详解 工程图配置文件是出工程图所必需了解掌握的知识。我写过一篇关于系统配置文件config.pro的教程,里面提到过配置文件对于使用PROE非常重要。 config.pro的使用,请先看这个帖https://www.wendangku.net/doc/db2948094.html,/thread-9138-1-1.html 不可否认的是,论坛工程图版的求助帖超过一半与工程图配置文件设置有关。可见工程图配置文件的重要性。工程图配置文件*.dtl使用上比系统配置文件config.pro要简单一些。所以本帖先将一些常用选项列出,供大家参考。配置文件使用方面的内容放在后面讲解。 本帖为原创,严禁转载! 请勿综合成PDF或WORD等格式打包下载,谢谢合作! 本帖不设回复可见,方便大家都可以见到 本帖所讲述的内容目录如下: 一、工程图配置文件常用选项及说明 二、工程图配置文件使用详解 1、创建工程图配置文件*.dtl 2、工程图配置文件选项的查找 3、工程图配置文件的选项设置与修改 4、工程图配置文件的正确调用 一、工程图配置文件常用选项及说明 drawing_units mm(前面为选项,空格后为值,下同) 此项设置所有绘图参数的单位,比如后面的文字大小、箭头大小等选项,是以mm为单位的,先要设置这个选项。 drawing_text_height 3.5 设置缺省文本的缺省高度,如注释中的文字,标注中的数值大小。 text_width_factor 0.7 设置文本的高度和宽度的比例,按国标应使用长仿宋体,应为0.7。 但此项设置对于windows系统自带的仿宋体无效。 broken_view_offset 3 设置破断视图两破断线之间的距离 detail_circle_line_stylephantomfont 设置详细视图(局部放大图)的边界线的线型,影响打印的粗细 projection_typefirst_angle 设置视图的投影方向为第一角法(国标要求用第一角法,日本等国用第三角法)

Java工程师面试题(三大框架)

Java工程师(程序员)面试题 Struts,Spring,Hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory 为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。 2.Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现:a)实体对象b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many 4.Struts1流程: 1、客户端浏览器发出HTTP请求。 2、根据web.xml配置,该请求被ActionServlet接收。 3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。 4、是否验证,需要验证则调用ActionForm 的validate方法,验证失败则跳转到input,成功则继续。 5、Action从ActionForm获得数据,调用javabean 中的业务方法处理数据。 6、Action返回ActionForward对象,跳转到相应JSP 页面或Action。 7、返回HTTP响应到客户端浏览器。 MVC设计模式:modal:“模型”也称业务逻辑,是正真完成任务的代码,相当与JavaBeanview:视图,其实就是显示界面,相当于JSPcontroller:控制器,他控制模型和视图的交互过程,相当于servletstruts1是基于MVC设计模式hibernate是基于ORM对象关系映射 5.struts是什么? struts1是基于JSP和servlet的一个开源的Web应用框架,使用的是MVC的设计模式struts2是基于webwork技术的框架,是sun和webwork公司联手开发的一个功能非常齐全的框架,struts2和struts1没有任何关系,是一个全新的框架 6.spring是什么? spring是一个集成了许多第三方框架的大杂烩,其核心技术是IOC(控制反转,也称依赖注

8313配置文件及说明

writereg MBAR 0xFF400000 writemem.l 0xFF400000 0xE0000000 # IMMRBAR = 0xE0000000 writereg MBAR 0xE0000000 writemem.l 0xE0000020 0xFE000000# LBLAWBAR0 - begining at 0xfe000000 writemem.l 0xE0000024 0x80000014# LBLAWAR0 - enable, size = 2MB #writemem.l 0xE0000028 0xFA000000 # LBLAWBAR1 FPGAbegining at 0xfa000000 #writemem.l 0xE000002C 0x8000000E # LBLAWAR1 - enable, size = 32KB writemem.l 0xE00000A0 0x00000000 # DDRLAWBAR0 - begining at 0x00000000 writemem.l 0xE00000A4 0x80000018 # DDRLAWAR0 - enable, size = 32MB # DDR Controller Configuration #1 DDRCDR writemem.l 0xE0000128 0x73040002 #CLK_CNTL writemem.l 0xE0002130 0x02000000 #同原0x02000000。[5-7]CLK_ADJST = 010(1/2),or 011(3/4) # CS0_BNDS writemem.l 0xE0002000 0x00000001 # 0x00000001 - 0x01FFFFFF ;32MB # CS0_CONFIG # [8]AP_0_EN = 1,0? # [16-17]BA_BITS_CS_0 = 00,01? Number of bank bits for SDRAM on chip select n. # [21-23]ROW_BITS_CS_0 = b'001' ; 12 row bits # [29-31]COL_BITS_CS_0 = b'010' ; 9 columns bits #原0x80840102 不同:[29-31]、[21-23], writemem.l 0xE0002080 0x80000001 # TIMING_CFG_3 原0x00000000 # 13-15EXT_REFREC = 001; AUTO REFRESH command period tRFC=72 ns writemem.l 0xE0002100 0x00010000 # TIMING_CFG_1 原0x26256222 # bit 1-3 = 2 tRP=15ns,(tck=7.5) (类似tRP ,为DDR芯片手册上内容)# bit 4-7 = 6 tRAS=42ns, # bit 9-11 = 2 tRCD=15ns, # bit 12 - 15 = 0011:2;0100:2.5 # bit 16 - 19 = 2 (10tck) tRFC=72 ns (tck=7.5) # bit 21 - 23 = 2 tWR=15ns, # bit 25 - 27 = 2 tRRD=12ns, # bit 29 - 31 = 1 tWTR=1tck writemem.l 0xE0002108 0x26232221

三大框架的优缺点

Struts的优点有: 1.实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 2.有丰富的tag可以用,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。 3.页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 4.提供Exception处理机制. 5.数据库链接池管理 6.支持I18N 缺点: 一、转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcat这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。 二、Struts的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。 三、测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。 四、类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。 五、对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest和ServletResponse,所有它摆脱不了Servlet容器。

Java_Servlet入门教程

教学活动首页 基本内容 第 7 章 Java Servlet 教学目的与要求:通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访问数据库;理解servlet 工作原理,servlet共享变量的使用;掌握编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理。 教学内容: 7.1 servlet 工作原理 7.2 编译和安装 servlet 7.3 通过 JSP 页面调用 servlet 7.4 servlet共享变量 7.5 HttpServlet 类 7.6 用 servlet 读写文件 7.7 用 servlet 访问数据库 7.8 会话管理 教学基本要求: 了解:用 servlet 读写文件,用 servlet 访问数据库 理解:servlet 工作原理,servlet共享变量 掌握:编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,会话管理 教学重点教学难点: servlet 工作原理,编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,会话管理 教学方法: 教学手段:多媒体教学和计算机程序演示 教学小结:(见教学进程) 作业与思考:见课后习题 课后记载:

教学进程 第7章 Java Servlet 我们已经知道,SUN公司以Java Servlet为基础,推出了Java Server Page。JSP提供了Java Servlet的几乎所有好处,当一个客户请求一个JSP页面时,JSP引擎根据JSP页面生成一个Java文件,即一个servlet。这一章,将对servlet做一个较详细的介绍,这不仅对于深刻理解JSP有一定的帮助,而且通过学习servlet,还能使我们选择使用 JSP+javabeans+servlet的模式来开发我们的Web应用程序。 我们已经知道,用JSP支持JavaBeans这一特点,可以有效的管理页面的静态部分和页面的动态部分。另外,我们也可以在一个JSP页面中调用一个servlet完成动态数据的处理,而让JSP页面本身处理静态的信息。因此,开发一个Web应用有两种模式可以选择: (1) JSP+javabeans (2) JSP+javabeans+servlet 7.1 Servlet工作原理 servlet由支持servlet的服务器:servlet引擎,负责管理运行。当多个客户请求一个servlet时,引擎为每个客户启动一个线程而不是启动一个进程,这些线程由servlet引擎服务器来管理,与传统的CGI为每个客户启动一个进程相比较,效率要高的多。 7.1.1 Servlet 的生命周期 学习过Java 语言的人对Java Applet(Java小应用程序)都很熟悉,一个Java Applet 是java.applet.Applet类的子类,该子类的对象由客户端的浏览器负责初始化和运行。servlet的运行机制和Applet类似,只不过它运行在服务器端。一个servlet是javax.servlet 包中HttpServlet类的子类,由支持servlet的服务器完成该子类的对象,即servlet的初始化。 Servlet的生命周期主要有下列三个过程组成: (1)初始化servlet。servlet第一次被请求加载时,服务器初始化这个servlet,即创建一个servlet对象,这对象调用init方法完成必要的初始化工作。 (2)诞生的servlet对象再调用service方法响应客户的请求。 (3)当服务器关闭时,调用destroy方法,消灭servlet对象。 init方法只被调用一次,即在servlet第一次被请求加载时调用该方法。当后续的客户请求servlet服务时,Web服务将启动一个新的线程,在该线程中,servlet调用service方法响应客户的请求,也就是说,每个客户的每次请求都导致service方法被调用执行。 7.1.2 init方法 该方法是HttpServlet类中的方法,我们可以在servlet中重写这个方法。 方法描述: public void init(ServletConfig config) throws ServletException servlet第一次被请求加载时,服务器初始化一个servlet,即创建一个servlet对象,这个对象调用init方法完成必要的初始化工作。该方法在执行时,servlet引擎会把一个

MySQL配置文件详解

./configure --prefix=/usr/local/mysql \ --without-debug \ #去除debug模式. --enable-thread-safe-client \ #以线程方式编译客户端. --with-pthread \ #强制使用pthread线程库编译. --enable-assembler \ #允许使用汇编模式. --enable-profiling \ #Build a version with query profiling code (https://www.wendangku.net/doc/db2948094.html,munity-features) --with-mysqld-ldflags=-all-static \ #静态编译mysqld的额外link参数. --with-client-ldflags=-all-static \ #静态编译client的额外link参数. --with-charset=utf8 \ #默认字符utf8. --with-extra-charsets=all \ #支持所有的语言字符. --with-innodb \ #innodb数据引擎. --with-plugins=innobase \ --with-plugins=heap \ #内存数据引擎. --with-mysqld-user=mysql \ #mysql安装使用的帐号 --without-embedded-server \ #去除安装embedded-server. --with-server-suffix=-community \ #社区形式安装. --with-unix-socket-path=/tmp/mysql.sock MYSQl启动的一般设置: /etc/https://www.wendangku.net/doc/db2948094.html,f基本部设参数设置. # back_log 是操作系统在监听队列中所能保持的连接数, # 队列保存了在MySQL连接管理器线程处理之前的连接. # 如果你有非常高的连接率并且出现"connection refused" 报错, # 你就应该增加此处的值. # 检查你的操作系统文档来获取这个变量的最大值. # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果 # 在MYSQL的连接请求等待队列中允许存放的最大连接请求数. defautl=50,最大65535,根据os对网络监听队列的情况来设置. back_log = 20000 # MySQL 服务所允许的同时会话数的上限 # 其中一个连接将被SUPER权限保留作为管理员登录. # 即便已经达到了连接数的上限. # 整个Mysql允许的最大连接数.这个参数会影响mysql的应用并发处理能力.有些资料上提到 500-800,以我们的机子来说单个mysql实例设置10000应该是没有问题的。如果还需可能需要第三方软件解决php连接池的问题,提高还需要连接池. max_connections = 10000 # 每个客户端连接最大的错误允许数量,如果达到了此限制. # 这个客户端将会被MySQL服务阻止直到执行了"FLUSH HOSTS" 或者服务重启 # 非法的密码以及其他在链接时的错误会增加此值. # 查看 "Aborted_connects" 状态来获取全局计数器. max_connect_errors = 10

三大框架笔记

一,Spring 框架提供了构建Web 应用程序的全功能MVC 模块,具有简单性,可测试性和松耦合特点.使用JavaBean替代EJB. Spring是一个轻量级的控制反转IoC(Inversion of Control)和面向切面的容器框架. 控制反转是容器控制程序,依赖注入是由容器动态的将某种依赖关系注入到组件之中.依赖注入减轻了组件之间的依赖关系,提高了组件之间的可移植性. 依赖注入有三种方式:接口注入,设值方法注入,构造子注入. Spring Web MVC 处理Http请求的大致过程: 一旦Http请求到来,DispatcherSevlet负责将请求分发。DispatcherServlet可以认为是Spring 提供的前端控制器,所有的请求都有经过它来统一分发。 在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。 HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts 中,这种映射是通过struts-config.xml文件完成的。 其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。 还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。Spring Controller将处理来自DispatcherServlet的请求。 Spring的Controller类似于struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于org.springframework.web.servlet.mvc包中。由于Controller需要为并发用户处理上述请求,因此实现Controller接口时, 必须保证线程安全并且可重用。Controller将处理客户请求,这和Struts Action 扮演的角色是一致的。 一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。 从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller 是单个Http请求处理过程中的控制器, 而ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。 View对象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map对象能够存储模型。如果ModelAndView返回的视图只是逻辑名, 则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。 DispatcherServlet将View对象渲染出的结果返回个客户。

SSH三大框架整合(详细版)

1:构建WEB项目 2:构建数据库 3:加入依赖包 尽量不要依赖IDE,通过自己手动加包完成 访问数据库需要的包:mysql的驱动包 Hibernate的包:hibernate3.jar 核心包 依赖的必须包:antlr-2.7.6.jar 用于解析成HQL语句的包 commons-collections-3.1.jar apache提供的包,提供对集合框架的增强 dom4j-1.6.1.jar 解析XML文件的包 javassist-3.9.0.GA.jar 动态修改字节码需要用到的包 jta-1.1.jar 用于JTA事务的包 slf4j-api-1.5.8.jar 日志接口包---》依赖一定的实现包 slf4j-log4j12-1.5.0.jar log4j.jar 另外一种实现包:slf4j-simple-1.5.10.jar 可选的包:c3p0-0.9.1.jar 用于创建C3P0连接池的包 ehcache-1.2.3.jar :用于缓存实现的包 cglib-2.2.jar 动态修改字节码的包 Spring的包:spring.jar 核心包 aopalliance.jar 使用Aop功能可以用到的包 aspectjrt.jar aspectjweaver.jar 使用ASPECTJ表达式需要用到的包 如果是使用DBCP连接池的话,需要两个jar包 commons-dbcp.jar commons-pool.jar 如果需要用到commons增加包的话,可以加入以下包 commons-beanutils.jar commons-lang.jar commons-logging.jar Struts2的包:commons-fileupload-1.2.1.jar commons-io-1.3.2.jar freemarker-2.3.13.jar :在Struts2 中默认使用的是FreeMarker模板引擎 ognl-2.6.11.jar :Struts2中使用OGNL表达式 struts2-core-2.1.6.jar 核心包 xwork-2.1.2.jar 核心包 struts2-spring-plugin-2.1.6.jar Struts2跟Spring整合需要的插件包 4:构建项目分包结构 5:放置配置文件 6:创建POJO和相对应的hbm.xml 7:修改空白的Hibernate.cfg..xml并创建表结构 8:创建DAO,SERVICE,ACTION 9:修改配置文件

javaweb之servlet

第4天:javaweb之servlet 考查的知识点:servetl的生命周期 1.Serlvet生命周期有关的方法是() (难度B) A.init(ServletConfig config) B.service(ServletRequest request,ServletResponse response) C.destory() D.getServletName() 答案:ABC 考查的知识点:http请求 2.Http缺省的请求方式是() (难度A) A.PUT B.GET C.POST D.TRACE 答案:B 考查的知识点:servlet基础 3.HttpServlet中,用来处理GET请求的方法是() (难度A) A.doHead B.doGet C.doPost D.doPut 答案:B 考查的知识点:servlet的配置 5.在部署Servlet时,web.xml文件中标签包含哪些子标签() (难度 C) A. B. C. D. 答案:ABCD 考查的知识点:servlet基础 6.以下哪一个类可以获取Servlet的初始化参数() (难度B) A.Servlet B.ServletContext C.ServletConfig D.GenericServlet 答案:C

考查的知识点:servlet的生命周期 7. 在servlet的生命周期中,容器只会调用一次的方法是() (难度B) A.service B.getServletConfig C.init D.destroy 答案:CD 考查的知识点:doGet方法 8.给定一个Servlet的doGet方法中的代码片断() (难度B) request.setAttribute(“name”,”zhang”); response.sendRedirect(“http://localhost:8080/servlet/MyServlet”) 那么在MyServlet中可以使用哪个方法把属性name的值取出 A.String str=request.getAttribute(“name”); B.String str=(String)request.getAttribute(“name”); C.String str=request.getParameter(“name”); D.无法取出 答案:D 考查的知识点:http响应头信息 10.下面哪一个指明向客户端发送的请求正文的MIME类型() (难度B) A.Content-Type B.Content-Encoding C.Content-Length D.全是 答案:A 考查的知识点:Servlet的实现方式HttpServlet 11.在javaEE中,对于HttpServlet描述正确的是() (难度B) A.自定义的Servlet继承了HttpServlet类,一定要覆盖掉service方法 B.HttpServlet类扩展了GenericServlet类,实现了GenericServlet类的抽象方法 C.HttpServlet类中处理客户请求和响应时所使用的两个接口是HttpServletRequest 和HttpServletResponse D.自定义的Servlet继承HttpServlet类,一般只需要覆盖doPost或doGet方法,不 必覆盖service方法,service方法会调用doPost或doGet 答案:BCD 考查的知识点:servlet的配置url-pattern 12.Servlet中,下面关于url配置方式正确的是() (难度B) A./my B./my/* C./*.do D.*.do

配置文件使用说明

(1)报警切除功能 C:\windows\cas2000ops.ini中 [CutAlarm] Enable=0 说明:Enable置0时无报警切除功能,置1时有报警切除功能。默认为0 ( 2 ) 语音报警功能 C:\ windows\ Keyboard.ini中 [Keyboard] SelfSound=1 SoundFileName=ALARM.wav 说明: a)SelfSound项置0时,无语音报警功能,置1时有语音报警功能。默认为0 b)语音文件路径应放在操作员站的Start路径下,SoundFileName用户可以自 定义,默认为ALARM.wav。 (3)在线查询时长 C:\windows\cas2000ops.ini中 [TimeLength] show24hour=1; show60hour=1 说明:show24hour置1时,实时趋势时间段有24小时的时间段,置0时没有show60hour同上。 (4)PID调节幅值更改 操作员安装路径\config\ PID_ADJUST.ini [PID点名] SLOW=0 FAST=0 说明:此调节是按绝对值调节,不是按百分比调节; SLOW与FAST项需为非零值,且FAST值〉SLOW值 默认情况下没有文件PID_ADJUST.ini,需要用户自定义。 (5)点详细窗口风格 C:\windows\cas2000ops.ini中 [TagCurve] Mode=0 说明:Mode置0为浮动窗口风格,置1位对话框。默认为0。 (6)操作员站工程师台菜单项中综合趋势窗口和开关趋势窗口菜单C:\windows\cas2000ops.ini中 [ExtraTrendMenu] Mode=0 说明:Mode置0有综合趋势窗口和开关趋势窗口菜单,置1无。默认为

Java三大框架(ssh)总结

Hibernate框架 第一章数据结构 1.1认识数据结构 数据:是信息的载体,是能够被计算机识别、存储、计算的符号集合是计算机处理的对象的总称; 数据元素:也称为结点,是组成数据的基本单位; 数据项:是数据的最小单位; 数据对象:是具有相同特征的数据元素的集合,它是数据的子集; 数据结构:计算机存储、组织数据的方式; ●逻辑结构:指从逻辑关系上描述数据,与数据的存储无关,且独立于语言; ?线性结构:有且仅有一个开始结点和一个终端结点,所有结点最多只有一个前驱 结点和一个直接后继结点; ?非线性结构:指一个结点可能有多个直接前驱和直接后继结点。 ●存储结构:指数据元素及其关系在计算机存储时如何表示,依赖于语言; ●数据运算:通茶昂贵定义在数据的逻辑结构上。 1.2算法 是为求解一个问题需要遵循的,被清晰的制定的简单指令的集合;正确的算法有如下特点: ●用待处理问题的相关信息作为输入数据 ●对一个既定的合法输入,多次执行同一算法,总返回同一个结果(随机算法除外) ●算法中的指令是可行的,即每个指令都可以实现 ●算法中指令的数量是有限的 ●算法执行完毕后,能够输出正确的数据集合 1.3算法分析 目的在于选择合适的算法,算法分析是从复杂度来考虑的。复杂度:衡量一个算法好坏的重要手段; ●时间复杂度:以算法执行时间长短来衡量 ●空间复杂度:以算法执行占用的存储空间来衡量

第二章算法 第三章设计模式 3.1面向对象设计原则 单一职责原则:要求每个对象应该只有一种责任; 开闭原则:设计程序时对扩展开放,对修改关闭; 里氏替换原则:任何情况下,子类替换父类,不会影响程序运行; 依赖倒置原则:提倡高层不依赖底层,二者都依赖抽象; 接口隔离原则:把多个功能分开声明,不强迫客户实现不需要的功能; 迪米特原则:最少只是原则尽可能的降低访问级别; 组合/聚合复用原则:尽量不用继承达到复用类的目的,而是使用组合和聚合。 3.2设计模式分类 创建型模式:如何创建对象以及何时创建对象,工厂模式,单例模式 结构型模式:对象该如何组织以及采用什么样的结构更合理 行为型模式:规定了各个对象应该具备的职责以及对象间的通信模式 3.3什么是框架 应用程序骨架;框架技术的优势在于: ●不用再考虑公共问题,框架已经帮我们做好了 ●可以专心在业务逻辑上,保证核心业务逻辑的开发质量 ●结构统一,便于学习、维护 ●框架集成的前人的经验有助于写出稳健、性能优良并且结构优良的高质量程序 3.4主流框架 3.4.1 Struts框架 最早的Java开源框架之一,定义了通用的Controller(控制器),通过配置文件(一般是struts-config.xml)隔离了Model(模型)和View(视图),以Action的概念对用户请求进行了封装,是代码更清晰易读。 3.4.2 Struts2框架 新的框架特性: ●从逻辑中分离出横切关注点的拦截器 ●减少或者消除配置文件 ●贯穿整个框架的强大表达式语言 ●支持可变更和可重用的基于MVC模式的标签API

ecology各配置文件开关说明

配置文件存放路径:ecology/WEB-INF/prop/ 1、weaver.properties(标准版基本配置) 以下几项配置为默认不打开的开关,或新版本增加的开关: ecology.changestatus = 1(任意不为空的值)--开启流程反馈功能。 ecology.overtime = 5(必须为数字,代表超时检测的时间,单位为分钟。如果不是数字,系统将默认1分钟检测一个超时)ecology.isgoveproj = 0(必须为数字,为0代表企业版,为1代表政务版)--【8831】 ecology.LicenseVersion = 2(必须为数字,2代表固定通过本地连接的网卡来获取license识别码,动态的虚拟网卡等不再获取,不添加此配置或值为1表示按照原方式获取识别码,包括虚拟网卡--【9911】) 2、Upgrade.properties(系统升级配置文件) STATUS = 0(数字,标示升级的状态 ERRORLOG = (升级错误日志所在地址) 3、Others.properties(非标准版功能配置文件) ##是否启用流程出口消息提醒【8940】 WORKFLOWWAYOUT = t(t为开启,f为关闭,默认为f) ##定时清除流程不良信息的周期,同时也做为消息提醒定时删除周期和保留天数。单位(天)【9080】 WFERRORDATACLEARTIME = 7(数字) ##系统是否使用多账号登陆【9325】 MOREACCOUNTLANDING = y(y为开启) ##即时通讯开关【9425】 MESSAGES_SET = 1(1为开启) ##是否启用签到签退功能true:是false或其它:否【9286】 isSignInOrSignOut=true(true为开启) ##繁体开关【11991】 ZH_TW_LANGUAGE = 1(1为开启) 4、workflowmonitor.properties(流程监控增加流程干预功能)WORKFLOWINTERVENORBYMONITOR = y(y为开启)【9423】 5、worktask.properties(计划任务【9427】) #1,使用计划任务模块;0,不使用;读不到该值,默认为0 isusedworktask = 1(1为开启) #计划任务模板转任务提前转化天数,读不到该值,默认为7天mudelchangewakefrequency = 7(数字) 6、dactylogram.properties(指纹登录【9557】) ONDACTYLOGRAM = Y(Y为启用,N为禁用)

三大框架原理

ooa(object oriented analysis)面向对象分析 ood(object oriented design)面向对象设计 Oop 面向对象编程 Spring javabean的生命周期 配置初始化调用销毁 Spring 1、spring原理 2、IoC概念:控制权由对象本身转向容器:由容器根据配置文件区创建实例并创建各个实例之间依赖关系。 spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中, 程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间 的藕合度。它的原理是在applicationContext.xml加入bean标记, 在bean标记中通过class属性说明具体类名、通过property标签说明 该类的属性名、通过constructor-args说明构造子的参数。其一切都是 返射,当通过applicationContext.getBean(―id名称‖)得到一个类实例时, 就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象, 唤起对象的set方法设置属性值、通过构造子的newInstance实例化得到对象。 正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring 的一个问题。 spring第二大作用就是aop,其机理来自于代理模式,代理模式 有三个角色分别是通用接口、代理、真实对象 代理、真实对象实现的是同一接口,将真实对象作为 代理的一个属性,向客户端公开的是代理,当客户端 调用代理的方法时,代理找到真实对象,调用真实对象 方法,在调用之前之后提供相关的服务,如事务、安全、 日志。其名词分别是代理、真实对象、装备、关切点、连接点。 2、动态代理:不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过 类实例化一个动态代理,在实例化动态代理时将真实对象 及装备注入到动态代理中,向客户端公开的是动态代理, 当客户端调用动态代理方法时,动态代理根据类的返射得

相关文档
相关文档 最新文档