【思维导图】Servlet总结-s
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根底知识学习〔三〕您所在的位置:首页 > 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
向服务器进行请求的两种方式
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笔记整理
"*"表示重要性,星号越多越重要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类详解关联:从我可以拿到你想要拿到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实现接⼝⼊门: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生命周期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基础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对象中。
Javaweb开发中的servlet知识总结
Java web开发中的servlet知识总结1. 请求(request)—响应(response)模式:用户在浏览器的地址栏中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求,服务器端程序接受这个请求,并对请求做出处理,然后发出一个回应,浏览器收到这个回应,并把回应的内容显示出来,这就是web应用程序的访问过程。
2. HTTP协议:浏览器单击链接是,会向服务器发送一段文本,告诉服务器请求的是那个网页,这段文本遵循HTTP协议格式,包含访问方式,HTTP协议版本,所用的浏览器,访问的地址等。
3. Servlet概述:Java web应用程序中所有的请求与响应都是通过servlet来完成的,servlet是java web的核心程序,所有的网址最终都要交给servlet来处理,servlet没有main之类的执行方法,当用户访问服务器是,服务器通过调用servlet的某些方法来处理整个过程。
4. Servlet的工作流程:浏览器提交的数据是遵循HttP协议的文本,这段文本由服务器接受并解析,封装成httpservletrequest类型的request对象,所有的http头数据都可以通过request的相应方法得到。
Tomcat同时把输出流圭寸装成HTTPServletresponse类型的response,通过设置response的相关属性就可以控制输出的内容,然后服务器将request 和response作为参数,调用servlet的相应方法比如doPost,doGet等。
5. Servlet的作用:主要处理业务逻辑,比如读取数据库,权限检查,业务处理等。
6. Servlet 接口:servlet 是一种实现了javax.servlet.Servlet 接口的类,servlet 规定了特定的方法来处理特定的请求,开发者只需要实现servlet的相应方法,用户访问web程序的时候,服务器会调用这些方法来完成业务处理。
Servlet总结
Servlet总结Servlet简介:Servlet是sun公司提供用于开发动态web资源的技术。
Sun公司在Servlet中提供了一个Servlet接口,用户若想开发一个动态的web资源(即一个Java程序向浏览器输出数据),就必须完成以下两个步骤:一、编写Java类,实现Servlet接口。
二、把开发好的java类部署到web服务器中。
Servlet的执行过程:1.客户端在浏览器地址栏输入访问地址,发出请求。
2.根据web.xml文件的配置,找到<url-pattern>的子元素的值得<servlet-mapping>元素。
3.读取<servlet-mapping>元素的<servlet-name>子元素的值,确定Servlet的名字。
4.找到<servlet-name>值得<servlet>元素。
5.读取<servlet>元素的子元素的<servlet-class>子元素的值,确定Servlet的类名。
6.到Tomcat安装目录webapps/xxxx/classes/xxx下查找xxx.class的文件。
Servlet的运行过程:Servlet程序是由web服务器调用的,当web服务器接收到客户端Servlet的请求后,将做以下操作:①Web服务器首先检查自己是否已经装载并创建了Servlet的实例对象。
如果是,就直接执行第④步,否则就执行第②步。
②装载并创建该Servlet的一个实例对象。
③调用Servlet的实例对象的init()方法。
④创建一个用于封装请求消息的HttpServletRequest对象和一个用于响应消息的HttpServletResponse对象后。
调用Servlet的service()方法,并将请求和响应的对象作为参数传递进去。
⑤Web应用程序被停止和重启之前,Servlet引擎将卸载Servlet,并在卸载Servlet之前调用Servlet的destory()方法。
JavaServlet详解(体系结构+注解配置+生命周期)
JavaServlet详解(体系结构+注解配置+⽣命周期)Java Servlet详解(注解配置+⽣命周期)什么是Servlet : (Server applet)?顾名思义:服务端的⼩程序Servlet只是⼀个接⼝,定义了Java被浏览器访问到(Tomcat)的识别规则,我们需要定义⼀个类来实现Servlet接⼝创建⼀个项⽬流程1.创建⼀个JavaEE项⽬2.定义⼀个类实习Servlet⽅法3.实现接⼝中的抽象⽅法import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import java.io.IOException;public class Servlet implements javax.servlet.Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("初始化");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("访问");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {System.out.println("关闭");}}4.在WEB.XML中配置Servelt<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_1.xsd"version="3.1"><servlet><servlet-name>demo1</servlet-name><servlet-class>Servlet</servlet-class></servlet><servlet-mapping><servlet-name>demo1</servlet-name><url-pattern>/demo1</url-pattern></servlet-mapping></web-app>结果执⾏原理加图解1.当服务器接受到服务器请求的时候,会先解析浏览器的UPL地址,获取访问服务的路径2.然后查找WEB.xml⽂件,查看是否有对应的标签体的内容3.如果有,则找到对应的全类名4.tomcat会将字节码⽂件加载进内存,并且创建其对象5.调⽤其⽅法Servlet的⽣命周期1.被创建:执⾏init⽅法只执⾏⼀次Servlet什么时候创建?默认情况:在第⼀次被访问的时候创建可以在配置执⾏Servlet的创建时机在标签下配置第⼀次被访问时,创建的值为负数在服务器启动时,创建的值为0或正整数注意Servlet的init⽅法,只执⾏⼀次,说明⼀个Servlet在内存中只存在⼀个对象,Servlet是单例的多个⽤户同时访问时,可能存在线程安全问题。
Servlet的简要总结
Servlet基础知识Servlet的运行过程如下图:Servlet的代码结构如下:public class SimpleServlet extends HttpServlet {private static final long serialVersionUID = 926865175251139599L;Public void init() throws ServletException{}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { }public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { }public void doDelete(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { }Public void destroy(){}}Servlet配置相关元素:(1) 声明Servlet对象在web.xml文件中,通过<servlet>标签声明一个servlet对象,标签下面包含两个子元素<servlet-name>和<servlet-class>,分别指明这个servlet的名称和所此对象的所在的类,完整位置,包名加上类名。
声明语句如下:<servlet><servlet-name>servlet</servlet-name><servlet-class>com.Servlet</servlet-class></servlet>(2)映射Servlet对象在web.xml文件中,通过<servlet-mapping>标签映射访问的servlet对象的URL,标签下面包含两个子元素<servlet-name>和<url-pattern>,分别指明这个servlet的名称和对象映射路径,通过此路径来访问。
Java-Servlet知识总结
Java-Servlet知识总结Servlet概述为什么要学习ServletJava Web的演变过程⼤概可以分为4个阶段:Servlet + jdbc + jspSpring + Struts2+ Hibernate(SSH)Spring + SpringMVC + Mybatis(SSM)微服务阶段前两个阶段基本上可以说是历史了,当今Spring家族⼀统天下。
现在实际开发中很少直接使⽤Servlet了,但是各个框架的底层还是⼤量使⽤了Servlet,学习Servlet对后续各个框架的理解和学习都很有帮助。
什么是 ServletServlet 是运⾏在 Web 服务器或应⽤服务器上的程序,它是作为来⾃ Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应⽤程序之间的中间层。
Servlet其实就是⼀个遵循Servlet开发的java类。
Serlvet是由服务器调⽤的,运⾏在服务器端。
Servlet带给我们最⼤的作⽤就是能够处理浏览器带来HTTP请求,并返回⼀个响应给浏览器,从⽽实现浏览器和服务器的交互。
⼯作流程Tomcat将浏览器提交的请求封装成HttpServletRequest对象,同时将输出流封装成HttpServletResponse对象Tomcat把request、response作为参数,调⽤Servlet的相应⽅法,例如doGet(request, response)等Servlet中主要处理业务逻辑⽣命周期在 Web 容器中,Servlet 主要经历 4 个阶段,如下图:加载Servlet。
当Tomcat第⼀次访问Servlet的时候,Tomcat会负责创建Servlet的实例初始化。
当Servlet被实例化后,Tomcat会调⽤init()⽅法初始化这个对象处理服务。
当浏览器访问Servlet的时候,Servlet 会调⽤service()⽅法处理请求销毁。
Servlet生命周期与工作原理
Servle t生命周期分为三个阶段:1,初始化阶段调用ini t()方法2,响应客户请求阶段调用se rvice()方法3,终止阶段调用de stroy()方法Serv let初始化阶段:在下列时刻Se rvlet容器装载S ervle t:1,Servl et容器启动时自动装载某些Se rvlet,实现它只需要在we b.XML 文件中的<Servl et></Servl et>之间添加如下代码:?<loa don-s tartu p>1</loado n-sta rtup>2,在Se rvlet容器启动后,客户首次向Serv let发送请求3,Servl et类文件被更新后,重新装载S ervle tServl et被装载后,Ser vlet容器创建一个Servl et实例并且调用Se rvlet的init()方法进行初始化。
在Serv let的整个生命周期内,ini t()方法只被调用一次。
Servl et工作原理:首先简单解释一下S ervle t接收和响应客户请求的过程,首先客户发送一个请求,Servl et是调用servi ce()方法对请求进行响应的,通过源代码可见,se rvice()方法中对请求的方式进行了匹配,选择调用doGe t,doP ost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。
在S ervle t接口和G eneri cServ let中是没有doG et,do Post等等这些方法的,Htt pServ let中定义了这些方法,但是都是返回er ror信息,所以,我们每次定义一个Ser vlet的时候,都必须实现do Get或d oPost等这些方法。
jspservlet知识点总结
Servletservelt:(基于网络的)什么是Servelt:运行在web服务器或应用服务器上的java程序,他是一个中间层负责连接来自web浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。
为什么使用servlet:Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet是位于Web 服务器内部的服务器端的Java 应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet的优点:servlet是用Java编写的,所以它们一开始就是平台无关的。
这样,Java 编写一次就可以在任何平台运行(write once,run anywhere)的承诺就同样可以在服务器上实现了。
servlet还有一些独特优点:■servlet是持久的。
servlet只需Web服务器加载一次,而且可以在不同请求之间保持服务(例如一次数据库连接)■servlet是与平台无关的。
如前所述,servlet是用Java编写的,它自然也继承了Java 的平台无关性。
■servlet是可扩展的。
由于servlet是用Java编写的,它就具备了Java所能带来的所有优点。
Java是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。
servlet自然也具备了这些特征。
■servlet是安全的。
从外界调用一个servlet的惟一方法就是通过Web服务器。
这提供了高水平的安全性保障,尤其是在你的Web服务器有防火墙保护的时候。
■setvlet可以在多种多样的客户机上使用。
由于servlet是用Java 编写的,所以你可以很方便地在HTML中使用它们。
Java工程师学习之路思维导图
Java⼯程师学习之路思维导图前⾯看Hollis的微信公众号更新了Java⼯程师成神之路的⽂档,感觉⾥⾯的内容清晰、齐全,可以⽤来审视⾃⼰,也能够知道⾃⼰在那些⽅⾯可以继续前⾏,想着有时间分享出来。
⼀、基础篇JVMJVM内存结构堆、栈、⽅法区、直接内存、堆和栈区别Ja va内存模型内存可见性、重排序、顺序⼀致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定JVM参数及调优Ja va对象模型oop-klass、对象头H o tSpo t即时编译器、编译优化类加载机制classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)虚拟机性能监控与故障处理⼯具jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace、TProfiler编译与反编译javac 、javap 、jad 、CRFJava基础知识阅读源代码String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSetJa va中各种变量类型熟悉Ja va Str ing的使⽤,熟悉String的各种函数JDK 6和JDK 7中substring的原理及区别、replaceFirst、replaceAll、replace区别、String对“+”的重载、String.valueOf和Integer.toString的区别、字符串的不可变性⾃动拆装箱Integer的缓存机制熟悉Ja va中各种关键字transient、instanceof、volatile、synchronized、final、static、const 原理及⽤法。
servlet知识点
Servlet知识点一、什么是Servlet1.1 Servlet的定义•Servlet是Java编写的服务器端程序,用于处理客户端(浏览器)的请求并生成响应的动态网页。
•Servlet可以与浏览器进行交互,可以根据不同的请求作出不同的响应。
1.2 Servlet的优势•跨平台性:由于Servlet是基于Java编写的,所以可以在不同的操作系统上运行,如Windows、Linux、Unix等。
•高性能:Servlet通过复用线程、内存缓存等方式,可以提高服务器的性能。
•可移植性:Servlet可以在不同的服务器(如Tomcat、Jetty、WebLogic等)上部署运行,不受特定服务器绑定。
二、Servlet的生命周期2.1 Servlet的生命周期方法Servlet的生命周期由下面三个方法组成: - init方法:在Servlet第一次被创建时调用,用于进行初始化操作。
- service方法:每次请求时都会调用该方法,用于处理客户端的请求并生成响应。
- destroy方法:在Servlet被销毁时调用,用于释放资源。
2.2 Servlet的初始化参数Servlet可以通过web.xml配置文件或注解的方式设置初始化参数,这些参数在Servlet的init方法中可以被访问到。
2.3 Servlet的线程安全性•单例:Servlet是单例的,即每个Servlet只会创建一个实例,多个请求会并发访问同一个Servlet实例。
•线程安全性:对于非线程安全的操作,可以通过synchronized关键字或其他线程安全的方式进行处理。
三、Servlet的请求和响应3.1 Servlet的请求对象(HttpServletRequest)•请求行:包括请求方法(GET、POST等)、请求路径和HTTP协议版本。
•请求头:包含浏览器信息、Cookie、Session等。
•请求体:主要用于传递表单数据或文件上传。
Servlet笔记整理
Servlet笔记整理什么是servlet? 在Web服务器端加载并运⾏的Java应⽤程序具体运⾏在Servlet引擎管理的JVM上。
Servlet容器负责Servlet和⽤户的通信以及调⽤Servlet的⽅法。
Servlet和⽤户的通信采⽤请求/响应模式。
⽤于以动态响应客户机请求形式扩展Web服务器(Web Container)的功能。
Servlet是开发服务器端应⽤程序的⼀个很好选择, Servlet与JSP结合使⽤,能提供更强⼤的服务器端功能。
⼀个servlet就是Java编程语⾔中的⼀个类,它被⽤来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应⽤程序。
()Web服务器什么是Web服务器⽹络应⽤⼀般分为C/S和B/S两种C/S结构是Client/Server(客户机/服务器)的简称 , 桌⾯应⽤程序多采⽤这种结构 ,B/S结构是Browser/Server(浏览器/服务器)的简称 , 特点是客户端⽆需安装特定的软件 , 只需要安装浏览器即可与程序进⾏互动Web服务器是基于B/S结构 , 通过http协议进⾏数据交互(收发)http协议规定了发送数据的格式(报⽂格式)浏览器中发送和读取的格式都是固定的Web服务器需要能够接收和解析发来的符合http协议的请求报⽂ , 并调⽤对应的代码处理 , 再向浏览器发送符合http协议规范的响应报⽂请求报⽂格式 :请求报⽂实例 :GET /mytest HTTP/1.1Host: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0.......响应报⽂格式 :响应报⽂实例 :HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: length<? xml version = "1.0" encoding = "utf-8" ?>< soap12:Envelope xmlns:xsi = "/2001/XMLSchema-instance" xmlns:xsd = "/2001/XMLSchema" xmlns:soap12 = "/2003/05/soap-envelope" >< soap12:Body >< CancelOrderResponse xmlns = "https:///webservices2.3" >< CancelOrderResult >< Success >boolean</ Success >< ErrorDescription >string</ ErrorDescription >< ErrorNumber >int</ ErrorNumber >< CustomerOrderReference >long</ CustomerOrderReference >< OrderConfirmation >string</ OrderConfirmation >< CustomerDealRef >string</ CustomerDealRef ></ CancelOrderResult ></ CancelOrderResponse ></ soap12:Body ></ soap12:Envelope >浏览器与服务器的交互过程简单图解 :常见的名词解释Web应⽤ , http服务器 , Web应⽤服务器Web应⽤被称为Web Application , 通过浏览器访问的应⽤程序 , 从⽽为⽤户提供相关的服务 , 例如查询购物等 ; 也包含很多公司内部软件 , 如oa系统 , 医院内使⽤的系统http服务器 : 也称为Web服务器 , 主要功能是提供⽹上信息浏览服务 , 例如Apache Nginx是⽐较常⽤的http服务器 ; 使⽤浏览器访问Web站点或Web应⽤ , 则必须通过http服务器Web应⽤服务器 : Web应⽤服务器能够运⾏服务器上的应⽤程序 , 并将结果返回给客户端浏览器 , 例如tomcat就是⼀种Web应⽤服务器 , 通常情况下 , Web应⽤服务器兼具http服务器的部分功能注意 : Web应⽤需要http服务器及Web应⽤服务器 , 因为不仅需要浏览信息 , 还需要运⾏应⽤程序 ; 但是tomcat以兼具了http服务器的部分功能 , 所以运⾏web应⽤可以直接使⽤tomcat开发Web应⽤的语⾔java .net php等语⾔均可开发Web应⽤ ; Java开发Web应⽤最⼴泛 ; 官⽅在JavaEE中提供了Servlet JSP组件来开发Web应⽤TomcatTomcat介绍Tomcat⽬录结构⽬录⽤途/bin存放windows或linux平台上⽤于启动和停⽌Tomcat的脚本⽂件/conf存放Tomcat服务器的各种配置⽂件 , 其中最重要的就是server.xml/lib存放Tomcat服务器所需的各种JAR⽂件/logs存放Tomcat运⾏中产⽣的各种⽇志/temp存放Tomcat服务器在运⾏中产⽣的临时缓存/webapps存放Tomcat发布的Web应⽤/work Tomcat把由JSP⽣成的Servlet放于此⽬录下启动和停⽌tomcat服务器可通过apach解压⽬录中的startup.bat/shoutdown.bat来启动或停⽌tomcat在浏览器地址栏输⼊ : http://127.0.0.1端⼝号或http://localhost:端⼝号 , 页⾯进⼊到Tomcat启动成功页⾯Tomcat默认端⼝号为-8080可以在conf中的server.xml中修改tomcat端⼝号<Connector port="8080" protocol="HTTP/1.1 "connectionTimeout="20000" redirectPort="8443 "/>Tomcat在idea中的配置1. 在idea的setting中配置tomcat路径2. 创建项⽬或模块时 , 选择java enterprise(也叫javaEE企业应⽤) , 检查Tomcat服务器是否配置成功 , 并勾上webAppliciation⾃动创建web.xml⽂件(web项⽬核⼼⽂件 ,必须创建)写模块名3. 项⽬会⾃动配置完成 , 再设置项⽬跟路径(建议设置)完成以上配置可以直接启动服务器备注 : 由于idea中相关配置为⾃动配置 , 如果服务器启动异常 , 可以检查下图配置1. 读取web⽬录的路径web.xml⽂件路径是否正确2. 项⽬打包策略是否正确 , 便以⽂件路径是否正确(WEB-INF/classes)其他Web服务器Jetty : 更轻量级 , 更灵活 , 被⼀些框架继承 , 免费JBoss : JBoss⽀持JavaEE标准 , 能够作为JavaEE应⽤服务器使⽤ , servlet容器只是其中⼀部分 , 免费Weblogic : 市⾯上最好的J2EE⼯具之⼀ , 功能⼤⽽全 , 收费ServletServlet介绍servlet是JavaEE规范中的开发组建servlet运⾏在服务器端 , 需要servlet容器⽀持 , 例如tomcat(运⾏在tomcat中)可以通过浏览器访问servlet , servlet可以⽣成动态页⾯返回给服务器编写servletpublic class TestServlet extends HttpServlet {//继承httpservlet 重写doGet doPost⽅法protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理代码}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}Web.xml中配置<servlet><servlet-name> TestServlet </servlet-name><servlet-class>com.javasm.servlet. TestServlet </servlet-class></servlet><servlet-mapping><servlet-name> TestServlet </servlet-name><url-pattern>/TestServlet </url-pattern></servlet-mapping>配置中 :servlet-name相同作为同⼀组配置servlet-class配置完整包名类名url-pattern配置开⽅访问路径 , 该路径为虚拟路径配置时也可以使⽤注解进⾏配置@WebServlet("/配置访问路径")注意 : 配置⽂件和⽤注释配置作⽤相同 , 只选⽤⼀种⽅式 , 不建议两种同时使⽤Servlet实现⽅法实现servlet的三种⽅式 : ⼀个实现 , 两个继承1. 实现servlet接⼝2. 继承GenericServlet抽象类 , 重写service()⽅法3. 继承HttpServlet抽象类(Httpservlet继承于GenericServlet) , 重写doGet() doPost()⽅法Servlet⽣命周期Servlet其他配置参数servlet中配置初始化参数 , 可以在servlet中直接读取配置中:<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.javasm.servlet.HelloServlet</servlet-class><init-param><param-name>testParam</param-name><param-value>Hello Servlet</param-value></init-param></servlet>代码中:String initParam = getInitParameter("testParam");配置servlet其中顺序 : load-on-startup<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>com.javasm.servlet.HelloServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>注意 : 如果配置了loat-on-startup , servlet实例会在项⽬启动时加载 , 并按照load-on-stratup中配置的顺序加载 , 如果不加load-on-startup , 实例会在有请求访问到该servlet时实例化Servlet中处理乱码Servlet运⾏在Web服务器(tomcat)中 , tomcat默认对传递的数据使⽤ios-8859-1进⾏编码 , 传递中⽂⽆法正常显⽰乱码分为两种情况 :请求乱码 :如果数据在传递时是正常中⽂ , 但是在servlet中取出是乱码 , 需要在请求对象中设置编码格式 , 对请求数据进⾏重新编码request.setCharacterEncoding("UTF-8");响应乱码 :如果数据在servlet中是正常中⽂ , 到页⾯中显⽰乱码 , 则需要在响应对象中设置相应头 , 让页⾯指定以何种编码格式解析相应数据response.setContentType("text/html;charset=UTF-8");实例代码:package com.javasm.controller;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MyServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stubsuper.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//请求乱码 req.setCharacterEncoding("utf-8");//响应乱码 resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");String uname = req.getParameter("uname");System.out.println(uname);resp.setContentType("text/html;charset=utf-8");PrintWriter pw = resp.getWriter();pw.print("hello! <h1>"+uname+"</h1>");pw.flush();pw.close();}}Servlet跳转页⾯的重定向和转发重定向重定向过程简单解释 :浏览器发送请求给服务器 , 服务器⽆法处理浏览器发送的请求 , 转⽽让浏览器找其他服务器去完成请求 , 此过程⼀直进⾏ , 直到任务完成特点 :1. 重定向是客户端⾏为(浏览器重新请求)2. 重定向是浏览器做了⾄少两次访问请求(有可能重定向多次)3. 重定量使浏览器地址改变4. 重定向两次跳转之间传输的信息会丢失5. 重定向可以指向任何的资源 , 包括当前应⽤程序中的其他资源 , 同⼀个站点上的其他应⽤程序资源 , 其他站点的资源(如⾃⼰⼯程重定向到百度)注意 :传递给HttpServletResponse.sendRedirect⽅法的响应URL以"/"开头 , 它是相对于整个web站点的根⽬录重定向代码实现转发原理 :转发过程简单解释 :浏览器请求服务器 , 服务器⽆法完成浏览器请求 , 将请求直接交给其他服务器⽽不是再响应给浏览器 , 再服务器转发的过程中携带浏览器给服务器的数据特点 :1. 转发是服务器⾏为(不经过浏览器)2. 转发过程中浏览器只做了⼀次响应3. 转发过程中浏览器地址不变4. 转发过程中服务器之间的信息传⼊信息不会丢失 , 可以通过request传递数据5. 转发只能将请求转发给同⼀个Web应⽤的组件注意 : 如果创建RequestDispatcher对象时指定的相对URL以"/"开头 , 它是相对于当前Web应⽤程序的根⽬录(只能是本⼯程下 , 因为是服务器⾏为)转发代码实现总结 :重定向和转发都是⽤来在servlet中跳转页⾯ , 但是有很⼤区别 , 重定向是浏览器的⾏为 , 转发是服务器的⾏为 , 所以重定向加⼤了带宽 , 转发加⼤服务器压⼒ , 对于参数传递也需要注意 , 重定向会使参数消失 , ⽽转发数据仍然存在 , 对于跳转的页⾯ , 重定向可以跳转⾄其他项⽬或⽹站 , 转发只能在⾃⼰⼯程下跳转路径相关注意 :绝对路径⼀般⽤在跳转其他⽹站 , 相对路径尽量避免使⽤ , 根路径则⼤多数情况都试⽤Servlet线程特性当多个客户端同时请求访问⼀个servlet , web服务器如何处理多个请求?多⽤户访问时 , servlet会针对每个请求开启新线程来处理数据收发 , 因为对每个请求的处理是固定的 , ⼀次请求收发就结束第⼀次访问servlet时 , 服务器将创建⼀个该servlet类的对象 , 并调⽤doXXX()⽅法⽣成响应 ; 多个客户端访问同⼀个servlet时 , 不再创建新的对象 , ⽽是共同⽤⼀个servlet对象 ,可以说 , servlet是多线程单实例的注意 : 多线程访问单实例的情况下 , 会不会产⽣线程安全问题 ?每个线程间 , 栈是独⽴的 , 运⾏⽅法时 , 会压⼊栈帧 , 所以运⾏⽅法时线程不会相互影响 , 因为单实例 , 所以如果servlet中有成员变量 , 那么所有县城都会放问道同⼀个实例的成员变量 , 会造成线程安全问题所以使⽤servlet时 , 尽量不要建⽴成员变量Servlet域对象域对象 , 是指服务器交互过程中可以⽤来存储数据的空间 , 相互独⽴ , ⽣效的时机不同 , 都可以⽤来存储信息Servlet三⼤域对象的应⽤request⼀个⽤户可以有多个每次请求都会产⽣⼀个请求结束对象消失建议⽤于页⾯间值传递Seesion⼀个⽤户⼀个每个浏览器都会产⽣⼀个会话过期或者关闭浏览器对象消失建议存放⼀些⽤户信息 , 不要把过多的信息存放在session⾥ServletContext(appliciation)全局只有⼀个是⼀个全局的存储信息空间 , 服务器开始就存在 , 服务器关闭才释放为了节省空间 , 提⾼效率 , 只存放少量重要的信息域对象统⼀⽅法 :返回值类型⽅法名⽅法作⽤void setAttribute(String key , Object value)以key/value的形式保存对象值Object getAttribute(String key)通过key获取对象值Servlet中常⽤类和⽅法ServletContext接⼝⽅法说明public void setAttribute (String name , Object object)绑定⼀个java对象和⼀个属性名 , 并存放到ServletContext中 , 参数name指定属性名 , 参数Object表⽰共享数据public Object getAttribute (String name)根据参数给定的属性名 , 返回⼀个Object类型对象public String getContextPath()返回当前web应⽤的URL⼊⼝public String getIntiParameter(String name)返回Web应⽤范围内匹配的初始化参数值 , 在web.xml中元素中元素表⽰应⽤范围内初始化的参数ServletConfig接⼝⽅法说明public string getInitParameter(String path)获取web.xml中指定Servlet的初始化参数值public ServletContext getServletContext()回去ServletContext实例public String getServletName()回去当前Servlet的名称HttpRequest(很常⽤)⽅法说明public String getParameter(String name)获取页⾯提交制定名称的参数值public string[] getParameterValues(String name)获取页⾯提交相同该名称参数的数组值public void setCharacterEncoding("UTF-8")设置请求字符编码格式public Map getParameterMap()返回⼀个保存了请求的所有参数和值的map对象public Object getAttribute(String name)返回⼀个请求中属性名为name的属性值public void setAttribute(String name , Object obj)向request范围内设置属性 , 参数name为属性名 , obj为属性值public String getContextPath()返回当前Web项⽬的跟路径Request对象中封装了很多跟http路径相关的⽅法request.getContextPath(); 项⽬名(/WebDemo)request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath+"/"结果为 : http://localhost:8080/WebDemo/request.getRemoteAddr() 客户端IP地址request.getServletPath() 请求的servlet的地址/studentrequest.getRealPaht("/") 在tomcat中的路径request.getRequestURL(); 获取请求路径/web_demo/studentHttpResponces⽅法说明public PrintWriter getWriter()获取响应的打印输出流对象public void setContexttype("text/html;charset=UTF-8")设置响应内容的类型和字符编码格式response对象中主要封装跟输出信息相关的⽅法HttpSession⽅法说明setAttribute(String key , Object value)以key/value的形式保存对象值getAttribute(String key)通过key获取对象值setMaxInactiveInterval()设置session的有效⾮活动事件 , 以秒为单位getId()获取session对象的编号invalidate()设置session对象失效session使⽤ :HttpSession session = request.getSession()从request中获取会话(session)对象 , 每个浏览器都会产⽣单独的session对象session作为会话对象 , 经常⽤来保存⽤户相关的登陆信息 , ⽅便服务器调⽤(⽤户本⾝信息 , 权限信息等)案例 :⽤户登录 , 通过session做是否已登录的访问控制登陆时将⽤户对象放在session中 , 访问其他服务时先判断⽤户是否登陆 , 有则进⾏服务 , 没有提⽰未登陆 ,session登陆案例。
servlet总结(word版)
1、javaweb学什么呢?用java语言开发动态的web资源。
对于java程序员而言,所谓动态的web资源就是可以运行在服务器上的java程序。
2、实现服务器管理java程序对于我们开发人员开发出的java类,这个类中到底有哪些方法,对于tomcat服务器是不可能知道的。
tomcat服务器需要执行我们编写的java类,就需要知道我们编写的java类有哪些方法,然后在适当的时间调用这些方法,所以开发人员编写的java程序要想运行在服务器上,就必须实现一个特殊的接口Servlet.javainterface Servlet{public void init();public void service(ServletRequest request,ServletResponse response);public void destroy();ServletConfig getServletConfig();String getServletInfo();}通常情况下,称继承了HttpServlet的程序成为servlet程序Servlet接口中定义了所有的servlet必须实现的方法。
一个servlet是一个运行在web服务器上的java程序。
servlet通常是通过HTTP协议接收和响应web客户端浏览器的请求的。
对于开发人员,编写一个servlet有三种途径:1、定义一个类实现Servlet接口.2、定义一个类继承GenericServlet。
GenericServlet类是一个抽象类,该类实现了Servlet接口和ServletConfig接口。
这个类中只有一个抽象方法public abstract void service(ServletRequest req,ServletResponse res);GenericServlet类的子类中实现service()方法即可。
3、定义一个类继承HttpServlet类。