JavaWeb复习(一)

目录

一、JDBC技术

1、说下原生jdbc操作数据库的流程?

2、什么要使用PreparedStatement?

3、关系数据库中连接池的机制是什么?

二、Http协议

1、http的长连接和短连接

2、HTTP/1.1与HTTP/1.0的区别

3、http常见的状态码有哪些?

4、GET和POST的区别

5、http中重定向和请求转发的区别

三、Cookie和Session

1、Cookie和Session的区别

2、Session共享怎么做的(分布式如何实现session共享)?

3、在单点登录中,如果cookie别禁用了怎么办?

四、jsp技术

1、什么是jsp,什么是Servlet?jsp和Servlet的区别?

2、jsp有哪些域对象和内置对象及他们的作用?

2.1、四大域对象

2.2、九大内置对象

五、XML技术

1、什么是xml,使用xml的优缺点,xml的解析器有哪几种?分别有什么区别?

六、AJAX

1、谈谈对ajax的认识?

2、jsoup原理

七、Tomcat服务器

1、Tomcat的目录结构,并说说每个目录的大致功能?

2、Tomcat如何进行优化?

3、Tomcat有哪几种connector运行模式?


一、JDBC技术

1、说下原生jdbc操作数据库的流程?

第一步:Class.forName()加载数据库驱动;

第二步:DriverManager.getConnection()获取数据库连接对象;

第三步:根据SQL获取sql会话对象,有两种方式Statement、PreparedStatement;

第四步:执行SQL处理结果集,执行SQL前如果参数值就设置参数值setXxx();

第五步:关闭结果集、关闭会话、关闭连接。

//1.通过反射加载驱动。
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象:Connection。
Connection conn = DriverManager.getConnection("jdbc.mysql://localhost:3306/web_test","root","123");
3.基本操作:执行SQL
//3.1获取执行SQL语句的对象
statement statement = conn.createStatement();
//3.2编写SQL语句
String sql = "select * from user";
//3.3执行SQL:
Result rs = statement.executeQuery(sql);
//3.4遍历结果集
while(rs.next()){
    System.out.print(rs.getInt("id")+" ");
    System.out.print(rs.getString("username")+" ");
    System.out.print(rs.getString("paaword")+" ");
    System.out.print(rs.getInt("age"));
}

详细代码请看(封装):http://blog.csdn.net/qq_29542611/article/details/52426006

2、什么要使用PreparedStatement?

1、 PreparedStatement 接口继承 Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。
2 、 作 为 Statement 的 子 类 , PreparedStatement 继 承 了 Statement 的 所 有 功 能 。 三 种 方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。
3、在 JDBC 应用中,在任何时候都不要使用 Statement,原因如下:
    一、代码的可读性和可维护性.Statement 需要不断地拼接,而 PreparedStatement 不会。
    二、PreparedStatement 尽最大可能提高性能.DB 有缓存机制,相同的预编译语句再次被调用不会再次需要编译。
    三、最重要的一点是极大地提高了安全性.Statement 容易被 SQL 注入,而 PreparedStatementc 传入的内容不会和 sql 语句发生任何匹配关系。

3、关系数据库中连接池的机制是什么?

前提:为数据库连接建立一个缓冲池。

  • 1:从连接池获取或创建可用连接
  • 2:使用完毕之后,把连接返回给连接池
  • 3:在系统关闭前,断开所有连接并释放连接占用的系统资源
  • 4:能够处理无效连接,限制连接池中的连接总数不低于或者不超过某个限定值。

其中有几个概念需要理解:

最小连接数是连接池一直保持的数据连接。如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费掉。

最大连接数是连接池能申请的最大连接数。如果数据连接请求超过此数,后面的数据连接请求将被加入到等待队列中,这会影响之后的数据库操作。

如果最小连接数与最大连接数相差太大,那么,最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

上面的解释,可以这样理解:数据库池连接数量一直保持一个不少于最小连接数的数量,当数量不够时,数据库会创建一些连接,直到一个最大连接数,之后连接数据库就会等待。

二、Http协议

1、http的长连接和短连接

HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。从 HTTP/1.1 起,默认使用的是长连接,用以保持连接特性。

2、HTTP/1.1与HTTP/1.0的区别

1、可扩展性

  • a)  HTTP/1.1 在消息中增加版本号,用于兼容性判断。
  • b)  HTTP/1.1 增加了 OPTIONS 方法,它允许客户端获取一个服务器支持的方法列表。
  • c)  为了与未来的协议规范兼容,HTTP/1.1 在请求消息中包含了 Upgrade 头域,通过该头域,客户端可以让服务器知道它能够支持的其它备用通信协议,服务器可以据此进行协议切换,使用备用协议与客户端进行通信。

2、缓存

在 HTTP/1.0 中,使用 Expire 头域来判断资源的 fresh 或 stale,并使用条件请求(conditional request)来判断资源是否仍有效。HTTP/1.1 在 1.0 的基础上加入了一些 cache 的新特性,当缓存对象的 Age 超过 Expire 时变为stale 对象,cache 不需要直接抛弃 stale 对象,而是与源服务器进行重新激活(revalidation)。
3、带宽优化

HTTP/1.0 中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了。例如,客户端只需要显示一个文档的部分内容,又比如下载大文件时需要支持断点续传功能,而不是在发生断连后不得不重新下载完整的包。

HTTP/1.1 中在请求消息中引入了 range 头域,它允许只请求资源的某个部分。在响应消息中 Content-Range 头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码为 206(Partial Content),它可以防止 Cache 将响应误以为是完整的一个对象。

另外一种情况是请求消息中如果包含比较大的实体内容,但不确定服务器是否能够接收该请求(如是否有权限),此时若贸然发出带实体的请求,如果被拒绝也会浪费带宽。

HTTP/1.1 加入了一个新的状态码 100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码 401(Unauthorized);如果服务器接收此请求就回送响应码 100,客户端就可以继续发送带实体的完整请求了。注意,HTTP/1.0 的客户端不支持 100 响应码。但可以让客户端在请求消息中加入 Expect头域,并将它的值设置为 100-continue。

节省带宽资源的一个非常有效的做法就是压缩要传送的数据。Content-Encoding 是对消息进行端到端(end-to-end)的编码,它可能是资源在服务器上保存的固有格式(如 jpeg 图片格式);在请求消息中加入 Accept-Encoding头域,它可以告诉服务器客户端能够解码的编码方式。

4、长连接

HTTP/1.0 规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个 TCP 连接,服务器完成请求处理后立即断开 TCP 连接,服务器不跟踪每个客户也不记录过去的请求。此外,由于大多数网页的流量都比较小,一次 TCP 连接很少能通过 slow-start 区,不利于提高带宽利用率。

HTTP 1.1 支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。

HTTP 1.1 还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
5、消息传递

HTTP 消息中可以包含任意长度的实体,通常它们使用 Content-Length 来给出消息结束标志。但是,对于很多动态产生的响应,只能通过缓冲完整的消息来判断消息的大小,但这样做会加大延迟。如果不使用长连接,还可以通过连接关闭的信号来判定一个消息的结束。

HTTP/1.1 中引入了 Chunkedtransfer-coding 来解决上面这个问题,发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度,最后用一个零长度的块作为消息结束的标志。这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。

在 HTTP/1.0 中,有一个 Content-MD5 的头域,要计算这个头域需要发送方缓冲完整个消息后才能进行。而HTTP/1.1 中,采用 chunked 分块传递的消息在最后一个块(零长度)结束之后会再传递一个拖尾(trailer),它包含一个或多个头域,这些头域是发送方在传递完所有块之后再计算出值的。发送方会在消息中包含一个 Trailer 头域告诉接收方这个拖尾的存在。

6、Host 头域

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个 IP 地址。

HTTP1.1 的请求消息和响应消息都应支持 Host 头域,且请求消息中如果没有 Host 头域会报告一个错误(400Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。
7、错误提示

HTTP/1.0 中只定义了 16 个状态响应码,对错误或警告的提示不够具体。HTTP/1.1 引入了一个 Warning 头域,
增加对错误或警告信息的描述。此外,在 HTTP/1.1 中新增了 24 个状态响应码,如 409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

3、http常见的状态码有哪些?

200 OK //客户端请求成功
301 Moved Permanently(永久移除),请求的 URL 已移走。Response 中应该包含一个 Location URL, 说明资
源现在所处的位置
302 found 重定向
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的 URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

4、GET和POST的区别

从表面现像上面看 GET 和 POST 的区别:

  • 1、GET 请求的数据会附在 URL 之后(就是把数据放置在 HTTP 协议头中),以?分割 URL 和传输数据,参数之间以&相连,如:login.action?name=zhagnsan&password=123456。POST 把提交的数据则放置在是 HTTP 包的包体中。
  • 2、GET 方式提交的数据最多只能是 1024 字节,理论上 POST 没有限制,可传较大量的数据。其实这样说是错误的,不准确的:“GET 方式提交的数据最多只能是 1024 字节",因为 GET 是通过 URL 提交数据,那么 GET 可提交的数据量就跟URL 的长度有直接关系了。而实际上,URL 不存在参数上限的问题,HTTP 协议规范没有对 URL 长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox 等,理论上没有长度限制,其限制取决于操作系统的支持。
  • 3、POST 的安全性要比 GET 的安全性高。注意:这里所说的安全性和上面 GET 提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的 Security 的含义,比如:通过 GET 提交数据,用户名和密码将明文出现在 URL 上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用 GET 提交数据还可能会造成 Cross-site request forgery 攻击。Get 是向服务器发索取数据的一种请求,而 Post 是向服务器提交数据的一种请求,在 FORM(表单)中,Method默认为"GET",实质上,GET 和 POST 只是发送机制不同,并不是一个取一个发!

5、http中重定向和请求转发的区别

            请求转发是一次请求一次响应,重定向是两次请求两次响应。
            请求转发地址栏不会变化的,重定向地址栏发生变化
            请求转发路径不带工程名,重定向需要带工程名路径
            请求转发只能在本网站内部,重定向可以定向到任何网站。

本质区别:转发是服务器行为,重定向是客户端行为。

  • 重定向特点:两次请求,浏览器地址发生变化,可以访问自己 web 之外的资源,传输的数据会丢失。
  • 请求转发特点:一次请求,浏览器地址不变,访问的是自己本身的 web 资源,传输的数据不会丢失。

三、Cookie和Session

1、Cookie和Session的区别

Cookie 是 web 服务器发送给浏览器的一块信息,浏览器会在本地一个文件中给每个 web 服务器存储 cookie。以后浏览器再给特定的 web 服务器发送请求时,同时会发送所有为该服务器存储的 cookie。

Session 是存储在 web 服务器端的一块信息。session 对象存储特定用户会话所需的属性及配置信息。当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
Cookie 和 session 的不同点:

  • 1、无论客户端做怎样的设置,session 都能够正常工作。当客户端禁用 cookie 时将无法使用 cookie。
  • 2、在存储的数据量方面:session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象。

2、Session共享怎么做的(分布式如何实现session共享)?

我们在实践中,首选 gemfire 或者 redis 作为 session 共享的载体,一旦 session 不稳定出现问题的时候,可以紧急切换 cookie 维护 session 作为备用,不影响应用提供服务。

redis 做session 共享,首先需要与业务逻辑代码解耦,不然 session 共享将没有意义,其次支持动态切换到客户端 cookie 模式。redis 的方案是,重写服务器中的 HttpSession 和 HttpServletRequest,首先实现 HttpSession 接口,重写 session的所有方法,将 session 以 hash 值的方式存在 redis 中,一个 session 的 key 就是 sessionID,setAtrribute 重写之后就是更新 redis 中的数据,getAttribute 重写之后就是获取 redis 中的数据,等等需要将 HttpSession 的接口一一实现。

3、在单点登录中,如果cookie别禁用了怎么办?

单点登录的原理是后端生成一个 session ID,然后设置到 cookie,后面的所有请求浏览器都会带上 cookie,然后服务端从 cookie 里获取 session ID,再查询到用户信息。所以,保持登录的关键不是 cookie,而是通过cookie 保存和传输的 session ID,其本质是能获取用户信息的数据。除了 cookie,还通常使用 HTTP 请求头来传输。但是这个请求头浏览器不会像 cookie 一样自动携带,需要手工处理。

四、jsp技术

1、什么是jsp,什么是Servlet?jsp和Servlet的区别?

jsp本质就是一个Servlet,它是Servlet的一种特殊形式(由SUN公司推出),每个jsp页面就是一个Servlet实例

Servlet是由Java提供用于开发web服务器应用程序的一个组件,运行在服务器端,由servlet容器管理,用来生成动态内容。一个servlet实例是实现了特殊接口servlet的Java类,所有自定义的servlet均必须实现Servlet接口。

区别:

  • jsp是html页面中内嵌的Java代码,侧重页面显示;
  • Servlet是html代码和Java代码分离,侧重逻辑控制,MVC设置思想中jsp位于视图层,servlet位于控制层。

jsp运行机制:

       

JVM只能识别Java类,并不能识别jsp代码!web容器收到.jsp为扩展名的url请求时,会将访问请求交给Tomcat中的jsp引擎处理,每个jsp页面第一次被访问时,jsp引擎将jsp代码解释为一个servlet源程序,接着斌阿姨servlet源程序生成.class文件,再有web容器servlet引擎去装载执行servlet程序,实现页面交互。

2、jsp有哪些域对象和内置对象及他们的作用?

2.1、四大域对象

1)pageContext  ————  page域_指当前jsp页面有效,跳到其他页面无效。

2)request  ————  request域_指一次请求范围内有效,从http请求到服务器处理结束,返回响应的整个过程,在这个过程中使用forward(请求转发)方式跳转多个jsp,在这些页面里你多可以使用这个变量。

3)session  ————  session域_指当前会话有效范围,浏览器从打开到关闭过程中,转发、重定向均可使用。

4)application ————  application域_指只能在同一个web中使用,服务器未关闭或者重启,数据就有效。

代码实现:

<%
    pageContext.setAttribute("name","张三");
    request.setAttribute("name","张三");
				
    //pageContext.setAttribute("name","张三",PageContext.SESSION.SCOPE);
    session.setAttribute("name","张三");
    application.setAttribute("name","张三");
%>
<%=pageContext.getAttribute("name")>//只在当前页面有效
<%=request.getAttribute("name")>
<%=session.getAttribute("name")>
<%=application.getAttribute("name")>

1、请求范围(ServletRequest)

  • 创建:当用户向服务器发送一次请求,服务器创建一个Request对象
  • 销毁:当服务器对这次请求作出了响应,服务器就会销毁这个request对象
  • 存数据:

                void setAttribute(String name,Object value)

                Object getAttribute(String name)

  • 作用范围:一次请求。(转发就是一次请求)

2、会话范围(HttpSession)

  • 创建:服务器端第一次调用getSession()方法的时候
  • 销毁:三种情况

                Session过期:默认的过期是30分钟
                非正常关闭服务器。(正常关闭服务器会序列化)
                手动调用session.invalidate(); //invalidate:使无效,销毁

  • 存数据:

                void setAttribute(String name,Object value);

  • 取数据:

                Object getAttribute(String name);

  • 作用范围:一次会话(多次请求)

3、应用范围(ServletContext)

  • 创建:服务器启动的时候创建,为每个web项目创建一个单独ServletContext对象。
  • 销毁:服务器关闭的时候,或者项目从服务器中移除的时候。
  • 存数据:

                void setAttribute(String name,Object value);

  • 取数据:

                Object getAttribute(String name);

  • 作用范围:整个应用

范围大小:servletContext > session > reqeust

使用场景: 能用小的,就不用大的

  • a)登录页面是,登录失败,用户名或者密码错误信息提示,使用request
  • b)登录页面是,登录成功,重定向到网站首页,使用session对象
  • c)统计网站的登录人数,使用servletContext对象

2.2、九大内置对象

JSP的内置对象,指定是可以直接在jsp页面中使用的对象。

 

代表内容

具体类型

作用域

使用情况

request

从客户端向服务器发送请求的对象

HttpServletRequest

request

用于接受通过HTTP协议传送到服务器的数据(包括头信息,系统信息,请求方式以及请求参数等)。

response

从服务器向客户端作出响应的对象

HttpServletResponse

page

表示服务器对客户端的回应,主要用于设置头信息,跳转,Cookie

session

服务器为客户端创建会话对象

HttpSession

session

用于存储特定的用户会话所需的信息

application

代表应用。获得的ServletContext对象

ServletContext

application

用于存储和访问来自任何页面的变量所有的用户共享一个Application对象

out

向输出写入内容的对象

JspWriter

page

用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。

page

当前的jsp翻译成Servlet后的对象的引用

Object

page

page对象代表JSP本身(对象this)只有在jsp页面内才是合法的。

pageContext

jsp的页面的上下文对象

PageContext

page

用于存储其他隐含对象,如requestresponsesessionapplication等对象。(实际上pageContext对象提供了对jsp页面所有的对象及命名空间的访问)。

config

jspServletConfig对象

ServletConfig

page

取得服务器的配置信息。

exception

表示jsp页面运行时产生的异常对象

Throwable

page

显示异常信息,必须在page指令中设定<%@ page isErrorPage=”true” %>才能使用,在一般的jsp页面中使用该对象将无法编译jsp文件。

五、XML技术

1、什么是xml,使用xml的优缺点,xml的解析器有哪几种?分别有什么区别?

xml是一种可扩展性标记语言,支持自定义标签(使用之前必须预定义)使用DTD和XML Schema标准化xml结构。

具体了解xml详见:http://www.importnew.com/10839.html

优点:用于配置文件,格式统一,符合标准,用于在互不兼容的系统间交互数据,共享数据方便;

缺点:xml文件格式复杂,数据传输占流量,服务端和客户端解析xml文件占用大量资源而不易维护。xml常用解析器有两种,分别是:DOM和SAX;

主要区别在于他们解析xml文档的方式不同。使用DOM解析,xml文档以DOM树形结构加载内存,而SAX采用的是事件模型。

详细区别:https://wenku.baidu.com/view/fc3fb5610b1c59eef8c7b410.html

六、AJAX

1、谈谈对ajax的认识?

Ajax是一种创建交互式网页应用的网页开发技术;Asynchronous JavaScript and XML 的缩写。

Ajax的优势:

通过异步模式,提升了用户体验。

优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽占用。

Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

Ajax的最大特点:

可以实现局部刷新,在不更新整个页面的前提下维护数据,提升用户体验度。

推荐:

经典的20道AJAX面试题(必知必会)

jQuery之ajax实现篇

ajax常用实例代码

2、jsoup原理

JavaScript是一种Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,别称为“Same-Origin Policy” (同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。

JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax编程时显得尤为重要。根据这个策略,在baidu.com下的页面中包含的JavaScript代码,不能访问在google.com域名下的页面内容;甚至不同的子域名之间的页面也不能通过JavaScript代码互相访问。对于Ajax的影响在于,通过XMLHttpRequest实现的Ajax请求,不能向不同的域提交请求,例如,在abc.example.com下的页面,不能向def.example.com提交Ajax请求等等。

然后,当进行一些比较深入的前端编程的时候,不可避免地需要进行跨域操作,这时候“同源策略”就显得过于苛刻。JSOUP跨域GET请求时一个常用的解决方案,下面我们来看一下JSOUP跨域是如何实现的,并且探讨下JSOUP跨域的原理。

jsoup的最基本的原理是:动态添加一个<script>标签,使用script标签的src属性没有跨域的限制的特点实现跨域。首先客户端注册一个callback,然后callback的名字传给服务器。此时,服务器先生成json数据。然后以Javascript语法的方式,生成一个function,function名字就是传递上来的参数jsoup。最后将json数据直接以入参的方式,放置到function中,这样就生成了一段js语法的文档,返回给客户端。客户端浏览器,解析script标签,并执行返回的Javascript文档,此时数据作为参数,传入到了客户端预先定义好的callback函数里。

jsoup详细见:http://www.nowamagic.net/librarys/veda/detail/224

七、Tomcat服务器

1、Tomcat的目录结构,并说说每个目录的大致功能?

2、Tomcat如何进行优化?

  • 优化连接配置:这里以Tomcat7的配置为例,需要修改conf/server.xml文件,修改连接数,关闭dns查询
  • 优化JDK扩大Tomcat使用的内存,默认为128M。

3、Tomcat有哪几种connector运行模式?

tomcat的运行模式有3种。修改他们的运行模式,3种模式的运行是否成功,可以看他的启动控制台,或者启动日志。或者登录他们的默认页面http://localhost:8080/查看其中的服务器状态。

  • 1)bio:默认的模式,性能非常低下,没有经过任何优化处理和支持.
  • 2)nio:利用java的异步io护理技术,no blocking IO技术.

想运行在该模式下,直接修改server.xml里的Connector节点,修改protocol为

<Connector port=”80″ protocol=”org.apache.coyote.http11.Http11NioProtocol”

    connectionTimeout=”20000″

    URIEncoding=”UTF-8″

    useBodyEncodingForURI=”true”

    enableLookups=”false”

    redirectPort=”8443″ />

启动后,就可以生效。

  • 3)apr:安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.

必须要安装apr和native,直接启动就支持apr。下面的修改纯属多余,仅供大家扩充知识,但仍然需要安装apr和native

如nio修改模式,修改protocol为org.apache.coyote.http11.Http11AprProtocol

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值