【思维导图】Servlet总结-s

合集下载

servlet总结

servlet总结

servlet总结4.servlet小结(1)servlet基础1)什么是servlet?servlet技术是使用java语言开发的一套组件规范,单独分配了一个线程来处理客户端发送的请求并返回结果2)如何写一个servlet?1,安装Tomcat:下载文件并安装,配置文件,启动Tomcat,关闭Tomcat2,开发Servlet步骤:一编写一个实线Servlet接口或继承HttpServlet的java类二使用javac命令变异源文件为字节码文件三将编译完的组件打包四部署五启动T omcat,并访问Servlet3)servlet是如何运行的?servlet作为一个补充web服务器功能的组件,不能单独运行,必须依赖Servlet容器才能运行1.浏览器一句IP建立与容器的连接2.浏览器将请求数据打包3.容器解析请求数据包,封装request和response对象4.容器依据请求资源路径找到Serlvet创建对象5.容器将request和response对象作为参数传入service方法,并调用6.容器将响应数据打包发给浏览器7.浏览器取出结果,生成页面4)http协议(了解)1.浏览器根据IP地址和服务器端口号与服务器建立连接2.想web服务器发送请求数据包(一次请求一次连接)3.web服务器接收请求数据包后,发送相应的响应数据包4.浏览器接受响应数据后关闭连接(2)servlet核心1)如何获得请求参数值?String request.getParameter(String paramName);String[] request.getParameterValues(String parameterName);2)表单包含有中文参数,如何处理?request.setCharacterEncoding("utf-8");请求数据response.setContentType("text/html;charset=utf-8");相应数据3)servlet输出中文,如何处理?4)容器如何处理请求资源路径?资源路径:在地址栏中输入的请求地址中,端口号之后的部分都是请求资源路径端口号之后是部署到web服务器上的应用名,之后的是具体的应用内的组件路径处理过程:根据IP和端口号与服务器建立连接服务器会获得请求资源路径信息。

Java基础知识Servlet基础知识学习(三)

Java基础知识Servlet基础知识学习(三)

Java根底知识Servlet根底知识学习〔三〕您所在的位置:首页 > IT干货资料 > java > 【Java根底知识】Servlet根底知识学习〔三〕【Java根底知识】Servlet根底知识学习〔三〕发布: java培训来源:Java培训干货资料2022-09-28 20:48:09 阅读() 分享手机端入口五、使用Servlet的优点1、运行效率高Servlet在Servlet容器中是单进程运行的(即:单例模式),即使屡次访问同一个Servlet,Servlet容器也只需在第一次访问时,加载一次Servlet实例到容器的地址空间中;对于以后的每次访问,Servlet容器会自动为它所接收的每个Servlet请求创立一个新线程处理请求,响应结束后,Servlet容器会立即结束线程。

只有在Servlet发生改变时,才会重新加载Servlet,而且加载一个修改后的Servlet无需重新启动效劳器,以提高Servlet运行效率。

2、标准的API接口SUN公司为Servlet的开发提供了一套标准的Servlet API,以保证Servlet开发的一致性,这一套标准API最大的优点是与网络协议无关,其次,可扩展性强,简单易用,可以通过继承机制,快速地增强功能。

在Servlet API中,没有包含以下内容,使Servlet的应用范围更加广泛:(1)网络传输所使用的协议(2)Servlet的加载方式(3)Servlet的效劳器环境因为Servlet API需要被嵌入到多种类型的效劳器中,如果包含以上三点,那么Servlet的应用范围就要受到限制。

3、其他优点Servlet使用Java开发,它具有Java语言的所有优点,如:良好的可移植性,可以“一次编译,处处运行〞。

Servlet可以单独为客户端提供效劳,也可以在html或jsp页面中被调用。

Servlet可以从本地磁盘加载,也可以通过网络远程加载。

第三章 Servlet

第三章  Servlet

向服务器进行请求的两种方式
HTTP提供向服务器进行请求的两种方式有Get方法和 Post方法。 标准的HTTP请求包括请求头(Header)和内容体(Body), 其中请求头包括请求方法(Get或Post)、请求URL、HTTP 版本。 Get方法将请求的参数放在URL后面向服务器传递,例 如……;Post方法则把请求的参数放在内容体中传递。 Get方法是默认方法,在浏览器地址栏输入网址来访问网 页时用Get方法,提交表单时默认也是用Get方法。 Get方法传送的数据受到Web服务器可接受的URL大小的 限制,而且使用Get方法时请求的参数可在浏览器地址栏 与Web服务器的运行日志中看到,保密性差。 在涉及中文处理的问题时,用Post方法也比用Get方法简 单。以后提交表单时我们应该尽量用Post方法。
容器和组件示意图
Servlet响应客户请求的过程(P146)
客户端发送请求至服务器; 服务器将请求信息发送至Servlet; Servlet生成响应内容并将其传给服务器。 响应内容动态生成,通常取决于客户端的 请求; 服务器将响应返回给客户端。
Servlet的优点
Servlet只在第1次被请求执行时才需要加载 不需要创建不同的进程来处理不同的客户请 求 由于Servlet就是Java程序,因此可以使用 Java类库编写具有各种功能的Servlet 平台无关
例:显示Servlet被访问的次数。
为了使Web服务器停止又重启后能够计数连续,还应该改 进程序: 覆盖init()方法,从文件中读出计数值。 覆盖destroy()方法,把计数值保存到文件。
HelloServlet.java
package ch3.servlets; import javax.servlet.*; import java.io.*; public class HelloServlet extends GenericServlet{ public void service(ServletRequest request, ServletResponse response) throws IOException{ response.setContentType("text/html;charset=GB2312"); PrintWriter out=response.getWriter(); out.println("<html>"); out.println("<head><title>HelloServlet</title></head>"); out.println("<body>"); out.println("你好!"); out.println("</body>"); out.println("</html>"); out.flush(); } }

达内Servlet笔记整理

达内Servlet笔记整理

"*"表示重要性,星号越多越重要day1一、Web应用基础1.B-S架构(***)架构的发展c/s vs. b/sc/s架构(client客户端-server服务端)(胖客户端:要求客户端运行业务;把业务放到服务器端,则是瘦客户端)典型的c/s应用:ftp工具、QQ、邮件系统、杀毒软件...1.建立在tcp/ip协议之上,有自己的通信规则(建立业务)2.需要相互配合才能完成一个完整业务逻辑3.允许多个客户端程序同时接入一个server程序(并发)4.每一个client(机器)都必须安装客户软件5.修改了server程序,通常client程序都要修改(升级)优点:利用客户端的计算能力,分担服务器的负荷(大型网络游戏就利用这点)缺点:用户必须安装客户端程序;客户端需要升级(麻烦)b/s架构(browser - web server(cluster集群))(极瘦客户端:最低限度地减少客户端程序,只需要browser(浏览器))1.基于http协议(应用层)2.几乎所有的业务逻辑处理都在server完成3.支持并发4.client要求很少,只需要安装browser(浏览器)5.修改server之后,client不需要任何变化6.server端开发技术:html/js,xhtml,... php,asp,jsp,servlet缺点:所有业务都在服务器端完成,服务器负荷大。

优点:支持高并发访问;不需另外安装软件(只需浏览器),免去更新的麻烦。

2.开发一个静态的Web应用(*)1)下载一个tomcat服务器2)web服务器-Tomcat的启动和配置(熟练使用和配置)先进入Tomcat主目录下的bin目录// %catalina_home%/binwindow平台:启动---startup.bat关闭---shutdown.batLinux平台:启动---startup.sh 或catalina.sh run //catalina单次启动;startup启动直至shutdown关闭---shutdown.sh 或Ctrl+C测试:打开浏览器,访问Tomcat 首页:http://localhost:8080 或者http://127.0.0.1:8080/ 获取进程Id强行杀死tomcat进程ps ef|grep tomcat ---查看tomcat的进程idkill -9 tomcat进程Id号--- 强行杀死tomcat进程3)介绍Web应用的结构严格定义为两部分①Web应用的根目录下有一个特定的子目录称为WEB-INF,其中包含不能被客户访问的专用Web应用程序软件,包括Servlet类文件、部署描述符web.xml、外部库以及其他任何由此应用程序使用的专用文件。

Servlet类详解

Servlet类详解

Servlet类详解关联:从我可以拿到你想要拿到servletConfig对象只要通过Servlet的getServletConfig()就可以拿到了在ServletConfig中提供了getServeltContext()方法,返回的是一个ServeltContext对象,也是通过方法拿到了ServeltContext对象,所以ServletConfig和ServeltContext也是关联的关系依赖:依赖的那个为被依赖的参数ServletConfig1、作用:就是拿取servlet的相关配置.也就是拿取web.xml里面的配置信息(这个配置信息都是一样的,所以无论哪个方法得到都是一样)创建的时机:当在创建Servlet对象的时候,服务器已经帮我们创建了这个对象,并作为参数传递进来了生命:作为init方法的形参,所以离开了该方法,就死亡了延长它的生命:把它作为一个全局变量2、获取ServeltConfig对象的方式(1). 采用带参的init方法(2). 采用servlet实例拿取(不要写带参的init方法)(推荐)[java] view plain copy 在CODE上查看代码片派生到我的代码片import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//演示如何获取servletConfig对象/*** 获取的方式有两种:* 1. 采用带参的init方法* 2. 采用servlet实例拿取(不要写带参的init方法)* @author Administrator**/public class ServletConfig1 extends HttpServlet {ServletConfig config ;@Overridepublic void init(ServletConfig config) throws ServletException {super.init(config) ;this.config = config ;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {ServletConfig sc = this.getServletConfig() ;//System.out.println(config == sc);System.out.println(sc);System.out.println(config == sc);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}在没有写带参的init方法的时候,默认调用父类的带参的init(),而在父类的init()中,已经帮我门把config给实例化了如果我们自己去写带参的init方法的话,就不会去调用父类的带参的init方法了,就不会实例化,就会是null3、拿取servlet的相关配置信息在xml中使用<init-param>配置信息,通过servletConfig对象获取这些配置信息xml:(注意:一个<init-param>只能配置一个键值对)[html] view plain copy 在CODE上查看代码片派生到我的代码片<servlet><servlet-name>ServletConfig2</servlet-name><servlet-class>com.example.servletconfig.ServletConfig2</servlet-class><init-param><param-name>name</param-name><param-value>张无忌</param-value></init-param><init-param><param-name>age</param-name><param-value>20</param-value></init-param></servlet>[java] view plain copy 在CODE上查看代码片派生到我的代码片import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//演示servletConfig对象的应用public class ServletConfig2 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//拿到servletConfi对象ServletConfig sc = this.getServletConfig() ;//拿取配置的单个信息// String name = sc.getInitParameter("name") ;// System.out.println(name);//拿取配置的多个信息Enumeration<String> enu = sc.getInitParameterNames() ;while(enu.hasMoreElements()){String name = enu.nextElement() ;System.out.println(name + ":" + sc.getInitParameter(name));}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}servletContextservlet上下文,一个全局对象,即工程对象,代表了一个应用(就是建的项目,一个工程就代表一个servletContext,每个工程的servletContext对象是不一样的)(1). 生命周期很长:产生:当服务器启动,加载这个应用的时候,就创建了servletContext这个对象;灭亡:当服务器关闭时或停止应用时(2).每个web应用都有一个唯一的servletContext对象.(3).在每个应用加载的时候,服务器就会创建servletContext对象。

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总结

Servlet总结

Servlet总结⼀、SERVLET基础1 .组件是什么?是符合⼀定规范,实现了部分功能的软件模块,组件需要部署到相应的容器⾥⾯才能运⾏。

2 容器是什么?是符合⼀定规范,提供组件运⾏环境的程序。

3、什么是servlet?sun公司制订的⼀种⽤来扩展web服务器功能的组件规范。

偏重于业务逻辑的实现4、什么是servelet容器?是符合⼀定规范,为servlet组件提供运⾏环境的程序。

5、如何写⼀个servlet?step1,写⼀个java类,要实现Servlet接⼝或者继承HttpServlet抽象类。

step2,编译。

(javac -cp servlet-api.jar -d . 类名.java)step3,打包。

创建⼀个符合如下结构的⽂件夹:appname (应⽤名)WEB-INFclasses(放字节码⽂件)lib(可选,放.jar⽂件)web.xml(部署描述⽂件)注:⼀般在开发完成之后,交付给⽤户去使⽤时,会使⽤jar命令将以上⽂件夹压缩成⼀个以".war"为后缀的⽂件。

step4,部署将step3创建好的⽂件夹或者压缩⽂件(.war⽂件)拷贝到servlet容器指定的⽂件夹下⾯(⽐如,拷贝到tomcat的webapps⽂件夹)。

step5,访问http://ip:port/appname/servlet-urlservlet-url在web.xml⽂件当中有相应的配置。

5、servlet如何运⾏的?⽐如,在浏览器地址栏输⼊http://ip:port/web01/hello?name=sally参考day01的servlet2.jpg图⽚步骤如下:1)在浏览器中输⼊地址确认,浏览器根据IP地址与port号与服务器建⽴连接2)浏览器将请求资源路径与请求参数根据http协议打包,⽣成⼀个请求数据包3)浏览器向服务器发送请求(请求数据包)4)Servlet服务器收到请求后,根据http协议进⾏解析(拆包)5)Servlet服务器创建request和response对象,将解析后的请求数据保存在request对象内6)Servlet服务器根据请求资源路径和web.xml⽂件找到对应的servlet类,对其实例化7)Servlet服务器创建ServletConfig对象8)Servlet服务器调⽤servlet对象的init()⽅法,将ServletConfig对象作为参数传⼊,对servlet对象进⾏初始化9)Servlet服务器调⽤servlet对象的service()⽅法,并将request对象和response对象作为参数传⼊进来10)Servlet对象从request对象中获得请求参数,进⾏处理11)将处理后的结果保存到response对象中。

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