马士兵SERVLETJSP.ppt

上传人:sccc 文档编号:5461373 上传时间:2023-07-09 格式:PPT 页数:60 大小:294.04KB
返回 下载 相关 举报
马士兵SERVLETJSP.ppt_第1页
第1页 / 共60页
马士兵SERVLETJSP.ppt_第2页
第2页 / 共60页
马士兵SERVLETJSP.ppt_第3页
第3页 / 共60页
马士兵SERVLETJSP.ppt_第4页
第4页 / 共60页
马士兵SERVLETJSP.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《马士兵SERVLETJSP.ppt》由会员分享,可在线阅读,更多相关《马士兵SERVLETJSP.ppt(60页珍藏版)》请在三一办公上搜索。

1、Servlet,背景知识,常用的Web服务器IISApacheTomcat通常的动态网页技术CGI(Common GateWay Interface)API常用的有(NSAPI,ISAPI)ASP(Active Server Page)PHP(Personal Home Page)JSP/Servlet(Java Server Page),LAMP,tomcat启动与停止,startup shutdowncatalina start catalina stopcatalina debug 调试错误的时候run exit help设置环境变量JAVA_HOMEshutdown.bat小心使用,t

2、omcat目录结构,bin:存放各种平台下启动和关闭Tomcat的脚本文件。startup.bat是windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件。common:在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。shared:在shared目录下的lib目录,存放所有web应用能访问的,但Tomcat不能访问的JAR。server:在server/webapps目录中,存放Tomcat自带的两个APP-admin和manager应用,来管理Tomcat-web服务用的。work:Tomcat把各种由jsp生成的s

3、ervlet文件放在这个目录下。temp:临时活页夹,Tomcat运行时候存放临时文件用的。logs:存放Tomcat的日志文件webapps:web应用的发布目录,把 java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了。conf:Tomcat的各种配置文件,最重要的是 server.xml.,Tomcat配置文件,conf/server.xml服务器的主配置文件conf/web.xml定义所有Web应用的配置(缺省的Servlet定义和MIME类型定义)conf/tomcat-user.xml 定义了tomcat用户的信息(用于权限与安全),conf/ser

4、ver.xml,顶层类元素:位于整个配置文件的顶层,;连接器类元素Connectors:客户和服务(容器类元素)间的通讯接口。接受客户请求,返回响应结果;容器类元素Containers:处理客户请求并且生成响应结果,包含3个:嵌套类元素Nested Components:可以加入到容器中的元素,包括:等一个包含一个或多个,一个包含唯一一个和一个或多个,多个 共享一个;一个包含多个,每个 定义一个虚拟主机,包含一个或多个web应用;元素是代表一个在虚拟主机上运行的Web应用。Please note that for tomcat 5.x,unlike tomcat 4.x,it is NOT r

5、ecommended to place elements directly in the server.xml file.Instead,put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.,什么是MIME,Multipurpos Internet Mail Extension指明白传送内容的格式最早用于邮件附件,server.xml的层次结构,HTTP协议基础,HTTP(Hypertext TransferProtocol,超文本传输协

6、议)HTTP是以明文方式发送数据的 用于从WWW服务器传输超文本到本地浏览器的传输协议。HTTP协议是以TCP/IP为基础的高层协议。现在广泛使用的版本HTTP/1.1,HTTP协议基础,GET/latest.html HTTP/1.1Host:Content-Type:text/html空行POST/servlet/serv HTTP/1.1Host:Content-Type:application/x-www-form-urlencodedContent-Length:32username=billgates&password=heheHTTP/1.1 200 OKDate:Fri,31

7、Dec 2003 10:23:34 GMTContent-Type:text/htmlContent-length:280,Web Application的概念,Web Application NameWEB-INFweb.xml 该web app的配置文件lib 该web app用到的库文件classes存放编译好的servletMETA-INF存放该web app的上下文信息,符合J2EE标准Web Application可以直接放在webapp下面也可以通过配置文件指定到其他目录 里面,Tomcat的目录结构,bin/二进制可执行文件和脚本catalina start stopcatal

8、ina debug run exitcommon/Catalina本身和web应用可加载的类目录conf/配置文件目录logs/日志目录server/服务器所需的类库目录shared/Web App共享的类库webapps/Web应用所存放的目录applicationswork/Tomcat的工作目录(存放jsp产生的class文件)temp/存放临时产生的文件,Servlet简介,Servlet是服务器小应用程序用来完成B/S架构下,客户端请求的响应处理平台独立,性能优良,能以线程方式运行Servlet API为Servlet提供了统一的编程接口Servlet一般在容器中运行常见的Servl

9、et容器Tomcat(其下载、安装和运行请参考视频文件)Jetty/Resin,Servlet示例 HelloWorldServlet.java,需求:编写一个生成纯文本的简单的Servlet类。目的:了解Servlet的基本概念在web.xml的配置,HelloWorldServlet HelloWorldServlet HelloWorldServlet/HelloWorldServlet,web app根路径(url)必须/开头,http:/xxx/test/aaa,web.xml/aaa-hello-servlet class-web-inf/classes-doGetl,创建Serv

10、let,XXX extends HttpServletOverride doGet doPostcopy to WEB-INF/classesweb.xml/restart server,Servlet的生命周期,生命全过程:加载 ClassLoader 实例化 new 初始化 init(ServletConfig)处理请求 service doGet doPost退出服务 destroy()只有一个对象API中的过程:init()/只执行一次,第一次初始化的时候public void init(ServletConfigconfig)throws ServletException servi

11、ce()public void service(ServletRequestreq,ServletResponseres)throws ServletException,java.io.IOException destroy()/webapp 退出的时候public void destroy(),TestLifeCycleServlet.java,init,init(servletconfig config)this.config=configinit();重写必须得super.init(config)不然不能使用this.getServletConfig当然也就不能用getInitParam

12、eter();我们只需要重写init();,Servlet编程接口,GenericServlet是所有Servlet的鼻祖用于HTTP的Servlet编程都通过继承 javax.servlet.http.HttpServlet 实现请求处理方法:(分别对应http协议的7种请求)1、doGet响应Get请求,常用2、doPost响应Post请求,常用3、doPut用于http1.1协议4、doDelete用于http1.1协议5、doHead 仅响应Get请求的头部。6、doOptions用于http1.1协议7、doTrace用于http1.1协议实例的个数:在非分布的情况下,通常一个Ser

13、vlet在服务器中有一个实例,示例:使用doGet和doPost方法处理请求,要求:编写一个带有doGet和doPost方法的Servlet目的:掌握基本的Servlet请求处理技术要点:public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOExceptionpublic void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException读取指定的

14、参数:ThreeParams.html/ThreeParams.java读取所有的参数:ShowParameters.java/ShowParametersForm.html获取表单信息通过HttpServletRequest的getParameter()方法来获得客户端传递过来的数据getParameter()方法返回一个字符串类型的值getParameterNames()返回Enumeration类型的值,getParameterValues()返回一个字符串数组,不要通过本地文件访问,ThreeParams.java,ShowParameters.java,HTTP的状态处理,HTTP是

15、无状态有状态:Server知道Client以前在我这儿做过什么事儿,处理Cookie,Http协议的无连接性要求出现一种保存C/S间状态的机制Cookie:保存到客户端的一个文本文件,与特定客户相关Cookie以“名-值”对的形式保存数据创建Cookie:new Cookie(name,value)可以使用Cookie 的setXXX方法来设定一些相应的值setName(String name)/getName()setValue(String value)/getValue()setMaxAge(int age)/getMaxAge()利用HttpServletResponse的addCoo

16、kie(Cookie)方法将它设置到客户端利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie,返回一个Cookie数组设置CookieSetCookies.java读取CookieShowCookies.java,Web上保持状态的手段:cookie session application persistence,1:服务器可以向客户端写内容2:只能是文本内容3:客户端可以阻止服务器写入4:只能拿自己webapp写入的东西5:Cookie分为两种属于窗口/子窗口(放在内存中的)属于文本(有生命周期的)IE中手动删除的cookie都是属于文本的6

17、:一个servlet/jsp设置的cookies能够被同一个路径下面或者子路径下面的servlet/jsp读到(路径=URL)(路径!=真实文件路径),会话跟踪,Session在某段时间一连串客户端与服务器端的“交易”在Jsp/Servlet中,如果浏览器不支持Cookie,可以通过URL重写来实现,就是将一些 额外数据追加到表示会话的每个URL末尾,服务器在该标示符与其存储的有关的该会话的数据之间建立关联。如hello.jsp?jsessionid=1234可以通过程序来终止一个会话。如果客户端在一定时间内没有操作,服务器会自动终止会话。通过HttpSession来读写Session规则如果

18、浏览器支持Cookie,创建Session的时候会把SessionID保存在Cookie里如果不支持Cookie,必须自己编程使用URL重写的方式实现Sessionresponse.encodeURL()转码URL后面加入SessionIdSession不象Cookie拥有路径访问的问题同一个application下的servlet/jsp可以共享同一个session,前提示同一个客户端窗口.,97923429349237293472,97923429349237293472,HttpServletRequest中的Session管理方法,getRequestedSessionId():返回随

19、客户端请求到来的会话ID。可能与当前的会话ID相同,也可能不同。getSession(boolean isNew):如果会话已经存在,则返回一个HttpSession,如果不存在并且isNew为true,则会新建一个HttpSessionisRequestedSessionIdFromCookie():当前的Session ID如果是从Cookie获得,为trueisRequestedSessionIdFromURL():当前Session ID如果是由URL获得,为trueisRequestedSessionIdValid():如果客户端的会话ID代表的是有效会话,则返回true。否则(比如

20、,会话过期或根本不存在),返回falseHttpSession的常用方法getAttributeNames()/getAttribute()getCreateTime()getId()getMaxInactiveInterval()invalidate()isNew()setAttribute()setMaxInactivateInterval(),SessionInfoServlet.javaShowSession.javaURLSession.java,Session总结,服务器的一块内存(存key-value)和客户端窗口对应(子窗口)(独一无二)客户端和服务器有对应的SessionID

21、客户端向服务器端发送SessionID的时候两种方式:cookie(内存cookie)rewriten URL浏览器禁掉cookie,就不能使用session(使用cookie实现的session)如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),所以很多网站要求客户端打开cookie,Application,用于保存整个WebApplication的生命周期内都可以访问的数据在API中表现为ServletContext通过HttpServlet的getServletContext方法可以拿到通过ServletContext的 get/s

22、etAttribute方法取得/设置相关属性TestServletContext.java,Servlet中的请求转发,RequestDispatcher接口对象允许将请求转发到其他服务器资源通过RequestDispatcher的forward(HttpServletRequest,HttpServletResponse)方法可以将请求转发通过ServletContext的getRequestDispatcher(String url)方法来获得RequestDispatcher对象,并且指定转发的目标url资源可以通过HttpServletRequest的setAttribute(Stri

23、ng name,String value)来设置需要传递的参数,然后在代理servlet中就可以使用HttpServerRequest的getAttribute(String name)来获得对应的值,数据库处理以及在Servlet中使用Bean,广义javabean=普通java类狭义javabean=符合Sun JavaBean标准的类在Servlet中使用Bean和在通常程序中使用Bean类似属性名称第一个字母必须小写,一般private,比如:private productId一般具有getters and setters要具有一个参数为空的构造方法但Bean不应具有GUI表现一般是用

24、来实现某一业务逻辑或取得特定结果示例:连接数据库ShowRs.javaShowRsUseBean.java,如何掌握Servlet,创建Servlet从HttpServlet继承重写doGet/doPost方法在web.xml中配置servlet生命周期Cookie/Session/Application的概念请求转发使用javabean,Filter and Listener,Servlet的多线程机制,Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个

25、Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有 多个线程在使用这个实例。Servlet容器会自动使用线程池等技术来支持系统的运行,JSP,JSP简介,JSP-Java Server Pages拥有servlet的特性与优点(本身就是一个servlet)直接在HTML中内嵌JSP代码JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行只有当客户端第一次请求JSP时,才需要将其转换、编译优点:优良的性能优于CGI,PHP,ASP平台无关性操作系统无关,Web服务器无关可扩展性tag的扩展机制,简化页面开发

26、,HelloWorld.jsp,http:/xxx/test/HW.jsp,HW.jsp,java class,JSP编程基本语法,JSP传统语法DeclarationScriptletExpressionCommentDirectivesAction动作指令内置对象JSTLJSF,JSP编程-Declaration,基本语法:说明:在此声明的变量、方法都会被保留成唯一的一份,直到JSP程序停止执行例:,AccessCounts.jsp,Scriptlet,基本语法:可以放入任何的Java程序代码例:,注释格式:,BGColor.jsp,表达式,基本语法:=后面必须是字符串变量或者可以被转换成

27、字符串的表达式不需要以;结束只有一行例:,Expressions.jsp,Directive,Directive(编译指令)相当于在编译期间的命令格式:常见的Directive:pageincludetaglib,Directive-page,指明与JSP Container 的沟通方式基本格式:,TestDirective.jsp,TestErr.jsp/ErrPage.jsp 读视频,Directive-include,将指定的JSP程序或者HTML文件包含进来格式:JSP Engine会在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。(原封不动的把

28、文件的代码copy到该位置,然后进行转换和编译,只生成一个java和class)限制:不能向fileURL中传递参数不能abc.jsp?user=aaa,TestBar.jsp/TitleBar.jsp,Action,Action(动作指令)在运行期间的命令常见的:jsp:useBeanjsp:setPropertyjsp:getPropertyjsp:includejsp:forwardjsp:paramjsp:plugin嵌入applet,jsp:include/jsp:param,用于动态包含JSP程序或HTML文件等除非这个指令会被执行到,否则它是不会被Tomcat等JSP Engin

29、e编译。格式:jsp:param用来设定include文件时的参数和对应的值例如:date.jsp/include.jspCompute.html/Compute.jsp/divide.jsp/multiply.jsp和编译指令include的区别include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;而include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入Include不能带参数,而可以动态包含的文件和被包含文件用的是同一个request对象,jsp:forward/jsp:param,用于将一个jsp的内

30、容传送到page所指定的JSP程序或者Servlet中处理(URL)格式:用于指定参数和其对应的值例如:test.jspforward.jsp/forforward.jspforward1.jsp/forforward1.jsp(with parameters)Forward的页面和forward到的页面用的是同一个request与此相对应的是response.sendRedirect,与response.sendRedirect的区别,使用同一个requestforward后的语句不会继续发送给客户端速度快服务器内部转换,可以传参数response.sendRedirect是不同的reque

31、stsend后的语句会继续执行,除非return速度慢需要到客户端的往返,可以转到任何页面可以传参数,直接写在url后面,客户端,forward,sendRedirect,jsp:useBean,通过jsp:useBean,可以在JSP中使用定义好的BeanBean的基本要素:必须要有一个不带参数的构造器。在JSP元素创建Bean时会调用空构造器Bean类应该没有任何公共实例变量,也就是说,不允许直接访问实例变量,变量名称首字母必需小写通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写基本用法:test.jsp/CounterBean.java 不要使用裸体类(

32、规范要求),jsp:useBean(con.),jsp:useBean各项参数含义:id:对象实例名称scope:Bean作用的范围,默认为page,对整个jsp页面有效class:Bean类名称(全名)type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类Scope各项参数的意义:page:仅涵盖使用JavaBean的页面(PageBean.jsp/CounterBean.java)request:有效范围仅限于使用JavaBean的请求(RequestBean.jsp/RequestBean2.jsp/CounterBean.java)session:有效范围在用户整个

33、连接过程中(整个会话阶段均有效)(SessionBean.jsp/Session2.jsp/CounterBean.java)application:有效范围涵盖整个应用程序。也就是对整个网站均有效(Application.jsp/Application2.jsp/CounterBean.java),jsp:useBean(con.),jsp:setProperty的格式:相当于beanName.setPropertyName(value)方法调用(setXxx()方法)jsp:getProperty的格式:相当于beanName.getPropertyName()方法调用(getXxx()方

34、法),jsp:useBean(con.),建立表单参数和Bean属性之间的关联通过param指定表单元素的名称,通过perperty指定对应的Bean属性名称,由此建立这两个变量的关联(SaleEntry.jsp/SaleEntry.java,用url传递参数)通过*来设置所有属性和输入参数之间的关联(SayHelloBean.html/SayHelloBean.jsp/HelloBean.java)在建立Bean属性和表单参数之间的对应关系时,服务器会将对应的参数自动转换成和属性类型匹配的数据初步解释编码问题,JSP内置对象,JSP的内置对象outrequestresponsepageCon

35、text 用的很少sessionapplicationconfig 用的很少exceptionPage用的很少,JSP编程-out,Out内置对象是一个缓冲的输出流,用来给客户端返回信息。它是javax.servlet.jsp.JspWriter的一个实例典型应用:向客户端输出内容例:向客户端输出一个字符串“Hello World”(HelloWorld.jsp),JSP-out,常用方法:println():向客户端输出各种类型数据newLine():输出一个换行符close():关闭输出流flush():输出缓冲区里的数据clearBuffer():清除缓冲区里的数据,同时把数据输出到客户

36、端clear():清除缓冲区里的数据,但不把数据输出到客户端getBufferSize():返回缓冲区的大小,JSP编程-request,request内置对象表示的是调用JSP页面的请求。通常,request对象是javax.servlet.http.HttpServletRequest接口的一个实例典型应用:通过request.getParameter(“paramName”)可以获得Form提交过来的参数值,JSP-request,可以用此对象取得请求的Header、信息(如浏览器版本、语言和编码等)、请求的方式(get/post)、请求的参数名称、参数值、客户端的主机名称等常用方法:g

37、etMethod():返回客户端向服务器端传送数据的方法getParameter(String paramName):返回客户端向服务器端传送的参数值,该参数由paramName指定getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration)getParameterValues(String name):获得指定参数的所有值,由name指定getRequestURI():获得发出请求字符串的客户端地址getRemoteAddr():获取客户端的IP地址getRemoteHost():获取客户端机器名称getServerNam

38、e():获取服务器的名字getServletName():客户端所请求的脚本文件路径getServerPort():获取服务器端的端口对应类:javax.servlet.http.HttpServletRequest,JSP-response,表示的是返回给客户端的响应是javax.servlethttp.HttpServletResponse接口的一个实例经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL常用方法:addCookie(Cookie cookie):添加一个Cookie对象,用于在客户端保存特定的信息addHeader(Stri

39、ng name,String value):添加HTTP头信息,该Header信息将发送到客户端containsHeader(String name):判断指定名字的HTTP文件头是否存在sendError(int):向客户端发送错误的信息sendRedirect(String url):重定向JSP文件和的区别sendRedirect通过客户端发起二次申请,不同的request对象Jsp:forward是同一个request,在服务器内部转发setContentType(String contentType):设置MIME类型与编码方式,JSP-Cookie,Http协议的无连接性要求出现一

40、种保存C/S间状态的机制Cookie:保存到客户端的一个文本文件,与特定客户相关Cookie以“名-值”对的形式保存数据通过getName和getValue的方式得到相应的名字和值,JSPsession&application,(默认)-表示session功能已经在jsp页面中启动session常用方法:void setAttribute(String name,Object value)Object getAttribute(String name)boolean isNew()application ServletContext,Servlet和JSP的通信,从JSP调用Servlet可用

41、请求信息自动传递到Servlet或者通过sendRedirect从Servlet调用JSP使用RequestDispatcher接口的forward(req,res)方法请求信息需要显式传递(在req、res参数中)或者通过sendRedirect例如:FromJspToServlet.jsp/ServletToJsp.java/ServletUseJsp.jspforward可以用”/”路径,是指web app的根路径,servlet forward jsp的时候一定要用“/”开头jsp sendRedirect到servlet应该用相对路径,因为这里”/”指网站的根路径servlet sendRedirect jsp也是request.getContextPath起作用了,Note:IE缓存和不跳转的问题html注释,注释不掉jsp,ECLIPSE,接口1,接口2,接口n,Plug In 1,Plug In 2,Plug In n,Eclipse插件结构,MyEclipse,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号