servlet入门笔记

合集下载

java servlet知识点总结

java servlet知识点总结

java servlet知识点总结一、Servlet 的生命周期1. Servlet 的生命周期包括初始化、服务和销毁三个阶段。

2. 初始化阶段:当Servlet 第一次被请求时,容器会调用其 init() 方法来进行初始化操作。

开发者可以在init() 方法中进行一些必要的初始化操作。

3. 服务阶段:当Servlet 接收到客户端请求时,容器会调用其 service() 方法来处理请求。

在service() 方法中,开发者可以根据请求进行相应的处理,并生成响应返回给客户端。

4. 销毁阶段:当Servlet 不再被需要时,容器会调用其 destroy() 方法来进行销毁操作。

在destroy() 方法中,开发者可以进行一些清理工作,释放资源等操作。

二、Servlet 的请求和响应1. 请求对象 HttpServletRequest:HttpServletRequest 对象封装了客户端的请求信息,包括请求方法、请求参数、请求头信息等。

开发者可以通过HttpServletRequest 对象获取客户端的请求信息,并进行相应的处理。

2. 响应对象 HttpServletResponse:HttpServletResponse 对象封装了生成响应的方法,包括设置响应状态码、设置响应头信息、向客户端输出数据等。

开发者可以通过HttpServletResponse 对象来生成相应的响应返回给客户端。

三、会话管理1. 会话管理指的是在客户端与服务器端之间建立会话,并保持会话状态。

在Servlet 中,可以通过会话管理来实现用户登录状态的保持、购物车的管理等功能。

2. 会话对象 HttpSession:HttpSession 对象代表着服务器端的会话,开发者可以通过HttpSession 对象来存储会话所需的数据,如用户信息、购物车内容等。

同时,开发者还可以通过HttpSession 对象来管理会话的生命周期、设置会话超时时间等。

servlet_jsp笔记综合

servlet_jsp笔记综合

Servlet_jsp day011、什么是Servlet?java程序遵照SUN的servlet标准在实现servlet标准的容器上运行。

通用功能,可到处运行如果依赖特定的容器的功能,则要“调试”在容器的支持下,处理http请求,动态生成http响应2、第一个servletstep1:写一个java类,实现Servlet接口或者继承HttpServlet.import javax.servlet.*;import javax.servlet.http.*;import java.io.*;step2:override service()方法获得请求参数值String value = request.getParameter(paramName);输出PrintWriter out = response.getWriter();out.println();step3: 编译依赖servlet-api.jarstep4: 打包appName(任意名称)WEB-INFclassesservlet字节码web.xmllib(可选)servlet要依赖的一些jar文件,比如数据库驱动xxx.htmlstep5:部署将appName整个包放到服务器部署目录(对于tomcat,是webapps(服务器有多种,都会遵守servlet规范,所以也可以部署到其它服务器,一般不需要做任何的修改)step6:访问servlethttp://ip:port/appName/servleturl3、了解http协议(1)定义:超文本传输协议,定义了浏览器与web服务器之间数据交换的过程与数据的格式。

(2)数据交换的过程:(无状态)浏览器:发送连接请求服务器:接受连接浏览器:发送数据服务器:处理并返回数据,立即关闭连接。

(3)数据的格式:请求数据包:请求行请求方式(get/post)请求资源的路径http版本号若干消息头浏览器与服务器之间的一些“暗号”:浏览器可以通过发送消息头,告诉服务器一些相关的特性。

servlet知识点总结

servlet知识点总结

servlet知识点总结servlet:运⾏在服务器端的⼩程序Servlet是⼀个接⼝,定义⾃⼰的servlet实现接⼝⼊门:1、创建⼀个Myservlet 实现servlet接⼝复写⽅法2、在init(),service(),destroy()⽅法中添加输出语句3、在web.xml中注册我们创建的servlet<servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.xmcc.servlet.MyServlet</servlet-class></servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/myServlet</url-pattern></servlet-mapping>servlet的⽣命周期:init(), 第⼀次访问servlet的时候调⽤(初始化)service(),每⼀个访问都会调⽤,(处理请求和响应)destroy(),服务器关闭执⾏原理:1、当服务器接收到客户端浏览器的请求后,会解析URL路径,获取到访问的Servlet的资源路径2、拿到资源路径通过web.xml⽂件进⾏查找,是否有对应的url-pattern3、如果有,则查找对应的servlet-class 获取全路径名4、tomcat会将字节码⽂件加载进内容,并创建对象5、调⽤⽅法注意:通过web.xml⽅式配置servlet是web3.0版本以前常⽤的⽅式那么在3.0版本后,使⽤注解的⽅式代替配置⽂件servlet注解⽅式:@WebServlet(value="/myServlet1",name = "MyServlet1")String name() default ""; 名字String[] value() default {}; 访问路径String[] urlPatterns() default {}; 访问路径int loadOnStartup() default -1; 启动时机WebInitParam[] initParams() default {}; 初始化参数loadOnStartup:servlet初始化时机默认是第⼀次访问servlet的时候初始化这个时候loadOnStartup值为-1servlet重要的对象:ServletConfig:servlet配置对象1、获取取当前servlet的名字2、获取当前servlet的初始化数据3、获取servletContext对象(域对象)ServletContext: 上下⽂对象(全局管理者,整个项⽬共享的对象)每个web项⽬启动的时候,都会创建⼀个servletContext对象,servletContext会随着web的启动⽽创建销毁则销毁1、数据共享setAttribute()getAttribute()removeAttribute()2、获取⽂件的真实路径getRealPath()3、以流的形式返回⽂件getResourceAsStream()4、获取web的初始化参数在web.xml的根⽬录下⾯进⾏配置<context-param><param-name></param-name><param-value></param-value></context-param>context.getInitParameter()request:请求:处理请求相关response:响应:处理响应相关什么是请求浏览器,访问服务器,什么是响应服务器,反馈浏览器request:域对象(⼀次请求)getParameter():获取单个数据(input框)getParameterValues();获取多个数据(checkedbox)getParameterMap():获取所有的参数key:name值value:name对应的value值获取请求头信息:request.getHeader("")获取请求⽅式:request.getMethod();获取项⽬路径:getContextPath();//请求转发:request.getRequestDispatcher("/hello.html").forward(request,response );地址栏不变,页⾯发⽣跳转如果发⽣了请求转发,还是⼀次请求路径相关;内部路径;直接写资源相对:./ ../绝对:带主机和协议的路径(访问站外资源)不带主机和协议的路径(最常⽤的)/项⽬名/资源路径response对象:响应码(状态码):200 成功404:访问的资源不存在500:服务器代码有问题304:读缓存302:重定向常⽤⽅法://设置编码response.setContentType("text/html;charset=utf-8");//回写数据response.getWriter().print("我已收到请求");getOutputStream():获取字节流注意:两个流是互斥的不能同时存在⾃⼰写的:字符流其他所有:字节流sendRedirect():重定向页⾯发⽣跳转地址栏要发⽣改变,两次请求请求转发和重定向的区别:1、重定向2次请求,请求转发1次请求2、重定向地址栏变化,请求转发地址栏不变3、重定向转发通过浏览器,请求转发通过服务器内部4、重定向可以访问站外资源(除开当前服务器以外),请求转发不能访问站外资源了解:setHeader(); 设置响应头addHeader();添加响应头,如果有就覆盖,没有就添加响应头:location:配合状态码实现重定向refresh:刷新cookie:⼩饼⼲Content-Disposition:下载相关//重定向⽅式⼀:sendRedirect():⽅式⼆:response.setStatus(302);response.setHeader("location", "/myServlet6");。

Servlet知识点总结

Servlet知识点总结

Servlet生命周期1.servlet容器完成加载Servlet类加载和实例化:当servlet容器启动时,或者servlet容器检测到需要这个servlet服务的第一个请求时,servlet容器会加载这个servlet,并生成servlet实例。

也可以在两者之间的任何时候执行(配置为load on start up的servlet是在容器启动时被加载的)。

2.serlet初始化当servlet实例化后,容器将调用这个对象的init()方法进行初始化,初始化的目的是在这个实例为请求提供服务前完成初始化工作,如建立配置连接,获取配置信息等。

servlet实例可以使用容器为其提供的ServletConfig对象,从web应用程序的配置信息中(即web.xml文件),获取初始化的参数信息3. 服务Servlet容器调用servlet实例的service()方法来对请求进行处理。

在service()方法中,servlet实例通过ServletRequest对象,来获取客户端的相关信息和请求信息;处理完成后,servlet实例通过ServletResponse对象来设置相应信息。

4. 销毁当容器检测到某个servlet实例需要在服务中移除时,则容器将调用servlet实例的destroy()方法,以便释放实例所使用的资源,并将数据存储到持久存储设备中。

当调用destroy()方法后,容器将释放此servlet实例,该实例随后将由垃圾回收器进行垃圾回收处理。

如果再有对此实例的服务请求时,容器将重新创建一个新的servlet实例。

如何获得请求参数?1.request。

getParameter(“name”);2.如果一个请求参数有多个值,需要返回一个数组!String []size=request.getParameter(“name”);For(int i=0;i<size.length;i++){out.print(size[0]);}出了参数,还可以获得其他1与请求相关的cookie Cookie [] cookies=request.getCookies();2与会话相关的session Session session=request.getSession();3请求的HTTP方法String methed=request.getMethed();Request对象的主要方法:setAttribute(String name,Object):设置名字为name的request的参数值getAttribute(String name):返回由name指定的属性值getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组getCharacterEncoding():返回请求中的字符编码方式getContentLength():返回请求的Body的长度getHeader(String name):获得HTTP协议定义的文件头信息getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例getInputStream():返回请求的输入流,用于获得请求中的数据getMethod():获得客户端向服务器端传送数据的方法getParameter(String name):获得客户端传送给服务器端的有name指定的参数值getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例getParametervalues(String name):获得有name指定的参数的所有值getProtocol():获取客户端向服务器端传送数据所依据的协议名称getQueryString():获得查询字符串getRequestURI():获取发出请求字符串的客户端地址getRemoteAddr():获取客户端的IP地址getRemoteHost():获取客户端的名字getSession([Boolean create]):返回和请求相关SessiongetServerName():获取服务器的名字getServletPath():获取客户端所请求的脚本文件的路径getServerPort():获取服务器的端口号removeAttribute(String name):删除请求中的一个属性RequestDispacher ciew= request。

servlet笔记整理(tomcat服务器)

servlet笔记整理(tomcat服务器)

servlet笔记整理(tomcat服务器)目录1.配置tomcat (2)2.主动改变tomcat的端口 (2)3.设置首页 (2)4.虚拟目录配置 (2)5.配置域名 (2)6.配置默认主机 (2)7.实现servlet接口的方式 (2)8.在MyEclipse中配置tomcat (3)9.使用通配符在servlet映射到URL中 (4)10.servlet 中的配置 (5)11.ServletConfig对象 (5)12.http请求消息头 (6)13.状态码原因叙述 (6)14.http响应消息头详解 (7)15.定时刷新Refresh使用 (7)16.文件下载Content-Disposition (7)17.缓存讲解 (8)18.中文乱码处理 (8)19.HttpServletRequest对象的详解 (9)20.连接数据库 (9)21.分页操作 (11)22.md5加密算法 (11)23.cookie说明 (12)24.session生命周期设置 (12)25.验证码生成算法 (12)26.过滤器 (14)27.控制session的销毁时间 (16)28.ServletContext的应用 (16)1.配置tomcat1环境变量中添加JAVA_HOME= 指向你的jdk的主目录(并不是bin文件目录)2在不配置JAVAHOME的前提下启动tomcat在startup.bat的第25行中添加set JAVA_HOME=JKD路径2.主动改变tomcat的端口到conf/server.xml 文件中修改server.xml的端口号)protocol="org.apache.coyote.http11.Http11NioProtocol"redirectPort="8443"/>3.设置首页①web文件夹下配置WEB-INF文件夹②在web.xml 文件中添加配置的代码:hello1.html4.虚拟目录配置①找到server.xml文件②编辑host节点添加Context path在server.xml中添加:myweb2:是访问时输入的web名,实际取出的是web2中的资源"d:\web2":绝对路径下web2中存放资源如:hello2.html实际访问时输入的地址:http://localhost:8088/myweb2/hello2.html 3需要重启tomcat,才能生效.5.配置域名(1) 在C:\WINDOWS\system32\drivers\etc 下的host文件添加127.0.0.1 (2) 在tomcat 的server.xml文件添加主机名filename=winter.jpg");//打开文件.说明一下web 站点下载文件的原理//1.获取到要下载文件的全路径Stringpath=this.getServletContext().getRealPath("/images/Winter.jpg");//2创建文件输入流FileInputStreamfis=new FileInputStream(path);//做一个缓冲字节数组byte buff[]=newbyte[1024];int len=0;//表示实际每次读取了多个个字节OutputStreamos=response.getOutputStream();while((len=fis.read(buff))>0){os.write(buff, 0, len);}//缺点: 没有进度条./图标///关闭os.close();fis.close();}17.缓存讲解①有些网站要求及时性很高,因此要求我们不缓存页面代码://指定该页面不缓存Ieresponse.setDateHeader("Expires", -1);【针对IE浏览器设置不缓存】//为了保证兼容性.response.setHeader("Cache-Control", "no-cache");【针对火狐浏览器等】response.setHeader("Pragma", "no-cache");【其他浏览器】②有些网站要求网页缓存一定时间,比如缓存一个小时response.setDateHeader("Expires",System.currentTimeMillis()+3600*1000*24);后面一个参数表示设置的缓存保持时间,-1表示永远缓存18.中文乱码处理发生中文乱码有三种情况①表单form(1)post在服务器端设置成浏览器端的编码方式。

第2章 Servlet_知识点

第2章 Servlet_知识点

第2章 Servlet1.概述Servlet运行在服务器端,它是一种实现了特殊接口的Java类,运行在Servlet容器中。

2.Servlet框架:a)要引用javax.servlet包和javax.servlet.http包。

①在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的通用接口和类。

②在javax.servlet.http包中定义了采用HTTP协议通信的HttpServlet类。

b)要继承GenericServlet和HttpServlet(其中后者继承前者)。

3.生命周期实例化→init() → service() →destroy()调用构造方法调用一次Servlet的生命周期由Web容器控制,当Servlet被请求时Web容器的操作:①如果Servlet实例不存在(servlet只有一个),Web容器会首先加载Servlet类,然后创建一个该Servlet的实例,接着调用它的init()方法进行初始化。

②调用service()方法,并向它传递请求和响应对象。

③当Web容器检测到一个Servlet实例应该被移除时,就会调用它的destroy()方法,以便让该实例可以释放它所使用的资源。

4.使用HttpServlet处理客户端请求i.请求对象的常用方法String getParameter(String labname)根据给定的参数名返回参数String[] getParameterValues(String labname)根据给定的参数名返回参数数组getRemoteAddr()返回远程客户端的ip地址setCharacterEncoding(String encoding)设置request的参数编码setAttribute()ObjectgetAtrribute(Stringname)根据参数给定的属性名返回属性值参数不存在的返回nullii.响应对象getWriter() 返回可以像客户端发送字符数据的PrintWrite对象getOutputStream()返回可以向客户端发送二进制数据的输入流对象iii.什么时候是Get方式的请求,什么时候是Post方式的请求?a)用get的情况①在地址栏直接输入地址时②点击页面中的链接③Form表单指定用get请求b)用post的情况只有一种:form表单指定用post请求iv.Get和Post方式的请求有什么区别?a)Get请求将数据附加在地址后面,数据直接显示在url中Post请求通过http机制,把那内容放在header中一起传递给服务器端交给action所指的程序进行处理。

servlet知识点

servlet知识点Servlet是Java中的一种技术,用于开发Web应用程序。

它是JavaEE规范中的一部分,提供了一种处理HTTP请求和响应的标准方式。

以下是一些Servlet的常见知识点:1. Servlet的生命周期:Servlet实例化、初始化、服务请求和销毁。

2. Servlet API:javax.servlet包中提供了一组类和接口,用于编写Servlet应用程序。

3. Servlet容器:包括Tomcat、WebLogic、WebSphere等,负责加载和管理Servlet实例以及处理HTTP请求和响应。

4. HttpServletRequest和HttpServletResponse:这两个类分别代表HTTP请求和响应。

HttpServletRequest提供了访问请求参数、头信息和请求体等的方法,HttpServletResponse则提供了向客户端发送响应的方法。

5. Servlet映射:Servlet容器通过Servlet映射来确定哪个Servlet处理哪个HTTP请求。

Servlet映射可以通过web.xml文件或注解来配置。

6. Servlet过滤器:过滤器用于在Servlet处理请求之前或响应之后执行一些操作,比如验证用户身份、日志记录等。

7. 会话管理:Servlet提供了会话管理的功能,可以用于跟踪用户的状态和数据。

常用的会话管理方式包括Cookie和Session。

8. 异步Servlet:异步Servlet允许Servlet容器在处理请求时不阻塞线程,从而提高服务器的并发性能。

9. Servlet安全性:Servlet应用程序需要考虑安全性,包括防止跨站点脚本攻击、SQL注入等攻击。

以上是一些常见的Servlet知识点,掌握这些知识可以帮助开发人员更好地理解和应用Servlet技术。

servlet+jsp笔记

servlet+jsp笔记1.tomcat 配置a)在server.xml下⾯改端⼝号,80默认可以在浏览器中不⽤写b) 在context.xml下⾯加个这样在每次我们编写完java⽂件的时候,tomcat默认就会把你改的重写加载,这样就不需要重启了⼯程了,2.servlet ⼀个接⼝,直接实现类中有两个重要的Genericservlet HttpServlet 两个抽象类其中Httpservlet 继承了Genericservlet 抽象类,明确指出了相应的Http功能协议在httpservlet⾥⾯有个service⽅法,他重写了genericservlet⾥⾯的⽅法,同时,⾃⼰有个Protected service ⽅法,tomcat服务器会帮我们⾃动的调⽤serivet⽅法,把前台的⽤户请求传给protect service 中的httpservletrequest 这样就可以实例具体的功能。

3.在页⾯中的action servlet的路径和web中servlet的路径不同地:我们这个地⽅的/ 代表整个路径绝对路径,http://127.0.0.1/my/但在我们的action⾥⾯/ 只能表⽰http://127.0.0.1所以我们在action⾥⾯通常还要配上⼯程的名字(有包的话也要加上)4.在serlvet中解决中⽂乱码问题:在printwriter前⾯加这么⼀句。

这句是给浏览器看的,给他⼀个编码5.在页⾯from 对应的action的路径问题:当我们只写这样时,他默认会把你访问的该页⾯路径:的http://localhost/my/这⼀部分加上action⾥⾯的那⼀部分构成: http://localhost/my/HttpServletTest 这样就会在我们的web.xml⾥⾯的servlet-mapping 找到我们相应的HttpServletTest.class如果我们的servlet有包的话,如图:我们在web.xml ⾥⾯也要改相应的路径如图:这样才能保证我们的tomcat能找到相应的servlet6.servlet的⽣命周期:(⾯试的可能性⽐较⼤)1,加载 ClassLoader2,实例化 new (⽤户第⼀次访问的时候)3,初始化 init(ServletConfig) (在new对象的时候,只调⽤⼀次,因为对象只new⼀次)4,处理请求 service doGet doPost(请求⼀次调⽤⼀次)a)servlet中不要设置成员变量,因为out对象是每个线程都会有的5,退出服务 destroy() (在我们该类销毁的时候会被调⽤,也只调⽤⼀次)从始⾄终只有⼀个servlet对象,多个⽤户访问时,每个线程都访问同⼀个servlet7.httpservlet的⽗类GenericServlet中有两个init()⽅法:⼀个是实现了servlet接⼝中的⼀个,⼀个是⾃⼰重写了⼀个,其中的servletconfig对象可以返回我们的servlet配置(也就是web.xml⾥⾯的配置)的⼀些信息;如果⽤户重写的⽅法是有参数的init⽽⼜没有super.init().那么我们的servletconfig没有被初始化,我们的这个地⽅就会报空指针异常。

servlet学习日志

Servlet容器负责Servlet和客户的通信以及调用Servlet方法。

动态网页:浏览器在不同时刻或不同条件下访问web服务器上的某个页面,浏览器上的页面内容会发生变化,此页面为动态网页。

1.浏览器值负责显示和处理web服务器返回的内容。

浏览器处理动态网页和静态网页的方式相同。

2.Web服务器发送的静态内容直接来自于文本或数据文件,动态内容需要一个程序临时产生。

3.要让浏览器访问某一页面时,能查询出一些动态实时的信息。

了解动态网页和动态html页面的区别动态网页程序与引擎:**动态网页内容创建过程:编写相应的动态网页程序由专门的web服务器程序模块来解释执行该动态网页程序。

**在动态网页程序代码中可以完成以下功能:各种程序逻辑控制获取客户端传输的数据对数据库进行操作创建输出内容Web程序开发就是用代码完成上述功能的动态网页程序。

**动态网页程序需要有一个专门的web服务器程序模块来执行,专门解释和执行某种动态网页程序的web服务器程序模块习惯上称为引擎**只有引擎才会与浏览器直接进行信息交换,动态网页程序不直接与浏览器进行信息交换,动态网页程序只有引擎进行信息交换,由引擎将浏览器的信息传递给动态网页程序和动态网页程序生成的结果返回给浏览器。

Servlet API 的jar包位于Tomcat /lib目录下查看tomcat提供的文档首页左侧Tomcat Documentation ——>Reference ——>Servlet API Javadocs查看Servlet API Javadocs: Tomcat\webapps\tomcat-docs\servletapi\index.htmlJSP API JavadocsServlet的注册和运行:Servlet的核心是在服务器端创建能实现响应用户请求的对象。

即Servlet对象。

编写Servlet项目:创建Servlet对象Servlet类继承Javax.servlet.http.*;包中的HttpServlet类1、编写创建Servlet对象的类public class HelloServlet implements Servlet2、在Tomcat服务器上保存编译这个类得到的字节码。

韩顺平servlet与jsp 笔记与心得

∙韩顺平 servlet与jsp 笔记与心得∙∙∙∙Java EE概述:Java EE是一个开放的平台,它包括的技术很多,主要包括十三种核心技术(java EE就是十三种技术的总称)。

建立一个整全的概念。

J2ee的十三种技术(规范)1.java数据库连接(JDBC)。

——JDBC定义了4种不同的驱动:1.JDBC-ODBC桥,2.JDBC-native驱动桥3,JDBC-network桥4.纯java驱动。

2.Java命名和目录接口(JNDI)(它是为了对高级网络应用开发中的使用的目录基础结构的访问。

)。

3.企业Java Beans(Enterprise Java Beans,EJB)(它提供了一个架构来开发和配置到客户端的分布式商业逻辑,因此可以明显减少开发扩展性、高度复杂企业应用的难度。

)。

4.JavaServer Pages(JSPs)。

5.Java servlets(servlets提供的功能大部分与JSP相同,JSP中大部分是HTML代码,其中只有少量的Java代码,而servlets则相反,它完全使用Java编写,并且产生HTML代码。

)。

6.Java IDL/CORBA(用得不多)。

7.Java 事务体系(JTA)/Java事务服务(JTS)(用得不多)。

8.JavaMail和JavaBenas激活架构(JavaBeans ActivationFramework,JAF)。

(JavaMail是一个用来访问邮件服务的API)。

9.Java信使服务(Java Messaging Service,JMS)(JMS是一个用来和面向信息的中层通信的API)。

10.扩展标记语言(Extensible Markup Language,XML)。

11.12. 13当前流行的及格框架struts+hibernate+spring(ssh).Java ee的开发环境(eclipse)Eclipse是一个开源的、可扩展的集成开发环境,已经成为目前最流行的j2ee 开发工具。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、web开发的背景知识(了解) b/s架构: 特点:客户端使用浏览器,服务器端使用web服务器,客户端与服务端使用标准化的 http 协议来进行通信。与c/s相比有两个优点: a、客户端不需要单独安装 b、开发相对简单(因为c/s架构需要自定义协议,开发相应的通信模块,而 b/s使用标准化的http协议,浏览器与web服务器都提供了相应的通信模块)

2、什么是servlet? sun公司制定的一种用来扩展web服务器功能的组件规范 1)、扩展web服务器功能 早期的web服务器(iis apache ws等等),只能处理静态的资源的请求(即需要事先 将html文件写好并保存到web服务器相应的文件夹下面),不能处理动态资源的请求 ( (即需要进行计算,然后生成相应的html) a,可以使用cgi程序来扩展。 cgi程序可以使用c/c++,perl等语言来开发,但是,程序比较复杂,而且可移值性 不好,性能也比较差,现在用得不多。 b,servlet可以扩展这些web服务器的功能。 浏览器发送请求给web服务器(apache ws),web服务器检查请求是否需要计算,如 果需要,web服务器会访问servlet容器,servlet容器会调用servlet来进行计算。 2)、组件规范 ---什么是组件? 符合一定规范,实现部分功能,并且需要部署到相应的容器里才能运行的软件模块 ---什么是容器? 符合一定规范,为组件提供运行环境及相应服务的程序。

3、如何开发一个servlet(不利用MyEclipse工具建web项目的情况下) step1:先写个java类,实现Servlet接口或者继承HttpServlet类(一般使用继承方式) step2:编译 step3:打包(创建一个具有如下结构的文件夹) appname(应用名称) WEB-INF classes(放.class文件) lib(可选,放.jar文件) web.xml(部署描述文件) step4:部署 将step3创建好的文件夹拷贝到servlet容器指定的某个文件夹下面(比如,如果 容器是tomcat,可以拷贝webapps文件就下面) 注意:也可以使用jar命令将step3创建好的文件夹压缩车成一个“.war”为后缀的文 件,然后拷贝。 step5:启动servlet容器,访问servlet http://ip:port/appname/servlet-url 在浏览器输入以上网址便可以访问到servlet对象service方法得到的内容,在网页 中显示,appname是所要访问的web project名,/servlet-url是web.xml文件 里的内容,通过个内容可以在中找到 里的内容,而这部分内容和里的内容相同匹配,进而在 找到里的要构建执行的servlet类名

4、安装tomcat容器(以下是linux里的方式) step1, /opt/apache-tomcat5.5.23.tar.gz 解压到 /home/soft01 step2,配置环境变量 JAVA_HOME: jdk安装路径 step3,启动tomcat cd /home/soft01/apache-tomcat5.5/bin sh startup.sh(或者 sh catalina.sh run) step4,打开浏览器,在浏览器地址栏输入 http://localhost:8080 关闭tomcat: cd /home/soft01/apache-tomcat5.5/bin sh shutdown.sh

写一个HelloServlet http://localhost:8080/firstweb/hello

5、使用myeclipse开发一个简单的servlet step1,启动myeclipse,让myeclipse管理tomcat。 具体操作为: 点击 configure server,在弹出的窗口中选择 MyEclipse->AppliationServers->tomcat5.x, 在右侧选择enable,然后设置一下tomcat的主目录 (tomcat解压之后的目录, 比如/home/soft01/apache-tomcat) myeclipse过期的同学,请去ftp下载 clack.zip,参考里面的文 当来处理。 step2,创建一个web工程 http://localhost:8080/web01/hello

myeclipse开发一个简单的servlet实例: public class HelloServlet extends HttpServlet{ /* * servlet容器收到请求之后会调用service方法来处理 * service方法必须按照以下格式 */ public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ //读请求参数 /* * getParameter方法要注意参数名不要写错,如果写错,会获得null */ String username = request.getParameter("uname"); //生成一个消息头("content-type") response.setContentType("text/html"); //获得一个输出流 PrintWriter out = response.getWriter(); //输出 out.println("

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> helloServlet web.HelloServlet helloServlet /hello

6、servlet是如何运行 比如,在浏览器地址栏输入 http://ip:port/web01/hello step1,浏览器依据ip,port建立与servlet容器(容器同时也是一个简 单的web服务器)之间的连接。 step2,浏览器将请求数据打包(按照http协议,该数据包也称为请求 数据包)。 step3,浏览器发送请求数据包给容器。 step4,容器收到请求数据包之后,解析该数据包,并将解析之后得到 的数据封装到request对象上,同时,容器还要创建response对象。 step5,容器要依据请求资源路径("/web01/hello")找到servlet的配置, 然后创建servlet对象。 step6,容器调用servlet对象的service方法。容器会将事先创建好的 request,response作为参数传递给service方法。 step7,在service方法里面,可以通过request对象获得请求参数,并进 行相应的处理,处理结果会放到response对象里面。 step8,容器从response对象中取出处理结果,然后打包(按照http协议, 该数据包称之为响应数据包)。然后将响应数据包发送给浏览器。 step9,浏览器收到响应数据包之后,解析处理结果,然后生成相应的页面。

http://localhost:8080/web01/hello?uname=jetty ?后是请求参数,其中uname是参数名,jetty是参数值。

http协议(了解) 1、http协议 (1)什么是http协议 有w3c制定的一种网络应用层协议,定义了浏览器与web服务器之间通信的过程以 及通信时所使用的数据格式。 ---通信过程: step1:浏览器建立与web服务器之间的连接 step2:浏览器将请求数据打包(生成请求数据包)并发送给web服务器 step3:web服务器将处理结果打包(生成响应数据包),并发送给浏览器 setp4:web服务器关闭连接 如果浏览器要再发请求,需重新建立连接 特点:一次请求,一次连接 优点:web服务器可以利用有限的连接为尽可能多的客户端(浏览器)服务 (2)数据格式 ---请求数据包 请求行:请求方式 请求资源路径 协议类型和版本 消息头:消息头是一些键值对,一般由w3c定义,浏览器与web服务器之间都可 以发送,表示特定的某种含义,比如,浏览器可以发送"user-agent"消息 头,告诉web服务器浏览器的类型和版本号 实体内容:只有当请求方式为post时才有值(请求参数),如果请求方式为get, 请求参数会添加到请求资源路径的后面 ---响应数据包 状态行:协议类型和版本 状态码 状态描述 ··什么是状态码:是三位数字,由w3c定义,表示服务器处理请求的状态 ··常见的状态码: 200:服务器处理请求正常 404:服务器依据请求路径找不到对应的资源 500:系统错误,服务器端的程序在运行过程中出错了

相关文档
最新文档