文章目录
- 1.Tomcat的优化经验
- 2.Tomcat根目录下有哪些文件
- 3.什么是Tomcat,怎样启动停止,配置文件,日志文件的存储
- 4.解释一下什么是servlet;什么是servlet容器;
- 5.servlet的生命周期,执行过程
- 6.实例化Servlet有几种方式
- 7.谈谈你对HTTP协议的理解
- 8.HTTP请求的GET与POST方式的区别
- 9.forward和redirect的区别
- 10.Servlet中怎么定义forward和redirect
- 11.过滤器有哪些作用
- 12.JSP的常用指令
- 13.jsp和Servlet中请求转发分别如何实现
- 14.jsp乱码如何解决
- 15.sesion和application的区别
- 16.JSP有哪些内置对象?作用分别是什么
- 17.JSP有哪些动作?作用分别是什么
- 18.JSP中动态Include与静态Include的区别
- 19.jsp和Servlet有哪些相同点和不同点,他们之间的联系是什么
- 20.页面传递对象的方法
- 21.Cookied和session区别
- 22.Filter的生命周期与执行过程
- 23.Tomcat系统内存怎么配置
- 24.JSTL标签库包含哪些
1.Tomcat的优化经验
- 内存优化
Tomact内存优化主要是对Tomcat启动参数优化,我么可以在Tomcat的启动脚本catalina.sh
中设置java_OPTS
参数JAVA_OPTS参数说明: -server启动JDK的server版; -Xms java虚拟机初始化时最小内存; -Xmx java虚拟机可使用的最大内存; -XX:PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 服务器参数配置: 现公司服务器内存一般都可以加到最大2G,所以可以采取以下配置: JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
- 并发优化
配置Tomcat安装目录下的configs/server.xml
,调整连接器connector
的并发处理能力
1).配置示例<Connector port="9027" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" URIEncodeing="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/>
2). 参数说明
maxThreads 客户请求最大线程数 minSpareThreads Tomcat初始化时创建的socket线程数 maxSpareThreads Tomcat连接器的最大空闲socket线程数 enableLookups 若设为true,则支持域名解析,可把ip地址解析为主机名 redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL的redirectPort端口 acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads) connectionTimeout 连接超时 minprocessors 服务器创建时的最小处理线程数 maxProcessors 服务器同时最大处理线程数 URIEncoding URL统一编码
- 缓存优化
1).参数说明compression 打开压缩功能 compressionMInSize 启用压缩的输出内容大小,这里面默认为2KB compressableMimeType 压缩类型 connectionTimeout 定义建立客户连接超时的时间,如果为-1,表示不限制建立客户连接的时间
2).Tomcat中的配置示例
<Connector port="9027" protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/>
2.Tomcat根目录下有哪些文件
- 1).config配置文件存放的路径
- 2).webapps项目部署的目录
- 3).bin tomcat运行需要的脚本与jar包的目录
- 4).lib运行项目时所需要的jar包的目录
- 5).work部署项目的缓存目录
- 6).temp临时文件存放的目录
- 7).logs记录日志的目录
3.什么是Tomcat,怎样启动停止,配置文件,日志文件的存储
Tomcat其实是一种web服务器,java编写的web项目可以部署在其上,用户在客户端请求时,都是先将请求发送到Tomcat上,Tomcat再将请求发送到对应的项目上
启动Tomcat 在Windows下:进入bin目录,双击startup.bat 在Linux下:cd进入bin目录, sh startup,sh 在开发工具eclipse中,右键选择Debug Server或者 Run Server 停止Tomcat 在Windows下:进入bin目录,双击shutdown.bat 在Linux下:cd进入bin目录, sh shutdown,sh 在开发工具eclipse中,选择服务器stop Server 配置文件在Tomcat的config文件夹下 日志文件在logs文件夹下
4.解释一下什么是servlet;什么是servlet容器;
在web容器中运行的服务器端java程序,主要用于响应HTTP请求.
Servlet一般用于MVC中的控制器部分
用来管理servlet生命周期的应用程序如(Tomcat wobloc
等)
5.servlet的生命周期,执行过程
Servlet生命周期分为
实例化,初始化,响应请求调用service()方法,消亡阶段调用destroy()方法
执行过程如下:
- 1).当浏览器发送一个请求地址,Tomcat会接收这个请求
- 2).Tomcat会读取项目中的web.xml中的配置
- 3).当请求地址符合
Servlet-mapping
标签映射的地址;会进入这个Servlet- 4).Servlet首先会
实例化(构造)
,然后初始化执行init()方法,init()方法至始至终执行一次
,Servlet对象是单实例
- 5).根据
请求的方式是get或post,在Servlet()方法中调用doget()或dopost()方法
,完成此次请求- 6).当服务器停止,会调用
destroy()方式,销毁实例
6.实例化Servlet有几种方式
Servlet实例化有两种,如下:
- 1).第一次请求时,
实例化Servlet对象
- 2).在web.xml文件中
<Servlet></Servlet>
之间添加<loadon-startup></loadon-startup>
,Tomcat启动时就会实例化Servlet对象
7.谈谈你对HTTP协议的理解
http是
超文本传输协议
(Hyper Text Transfer Protocol),是用于从www服务器传输超文本到本地浏览器的传送协议
http是一个应用层协议
,由请求和响应构成,是一个标准的客户端服务器模型.http是一个无状态的协议.大多承载与TCP协议之上
工作流程:
一次http操作称为一个事务,其工作过程可分为四步:
- 1).首先客户机与服务器需要建立连接,只要单击某个超级链接,http的工作开始
- 2).建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL),协议版本号,后边是MIME信息包括请求修饰符,客户机信息和可能的内容
- 3).服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号,一个成功或错误的代码,后边是MIME信息包括服务器信息,实体信息和可能的内容.
- 4).客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出.对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了
一个http请求报文格式:
请求报文:HTTP请求报文主要由请求行,请求头部,请求正文3部分组成; 响应报文:HTTP响应报文主要由状态行,响应头部,响应正文3部分组成 HTTP协议的请求方法有GET,POST,HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT
HTTP常见状态码:
状态码 说明 200 响应成功 302 跳转,跳转地址通过响应头中的location属性指定(JSP中 Forward
和Redirect
之间的区别)400 客户端请求有语法错误,不能被服务器识别 403 服务器接收到请求,但是拒绝提供服务(认证失败) 404 请求资源不存在 500 服务器内部错误
8.HTTP请求的GET与POST方式的区别
Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的
GET
和POST
方法,
二者主要区别如下:
- 1).GET是用来从服务器上获得数据,而POST是用来向服务器上传数据
- 2).GET将表单中数据按照
variable=value
的形式,添加到action
所指向的URL后面,并且两者使用"?“连接,而各个变量之间使用”&"连接;POST是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向的URL- 3).GET是不安全的,因为在传输过程中,数据被放在请求URL中,POST的所有操作对用户来说都是不可见的
- 4).GET传输的数据量小,这主要是因为受URL长度限制;而POST可以传输大量的数据,所以在上传文件只能使用POST;
- 5).GET限制form表单的数据集必须为ASCII字符,而POST支持整个ISO10646字符集;
- 6).GET是form的默认方法
9.forward和redirect的区别
- forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容在发给浏览器,浏览器根本不知道服务器发送的那个内容是从哪儿来的,所以他的地址栏中还是原来的地址.redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以
session,request
参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的来链接地址.前者更加高效,在前者可以满足需要时,尽量使用forward()
方法,并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其他服务器上的资源,则必须使用sendRedirect()
方法.总结:forward是程序内部跳转,不会跳出Tomcat服务器,redirect可以外部跳转,从一个服务器跳转到另一个服务器
10.Servlet中怎么定义forward和redirect
转发:
request.getRequestDispatch("demo.jsp").forward(request,response)
重定向:request.sendRedirect("demo.jsp")
11.过滤器有哪些作用
可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等
12.JSP的常用指令
<%@page language="java" contenType="text/html;charset=gb2312" session="true" buffer="64KB" autoFlush="true" isThreadSafe="true" info="text" errorPage="error.jsp" isErrorPage="true" isElignored="true" pageEncoding="gb3212" import="java.sql"%>
isErrorPage:是否能使用Exception对象;isELIgnored:是否忽略EL表达式;
<%@include file="filename"%> <%@taglib prefix="c" uri="http://........"%>
13.jsp和Servlet中请求转发分别如何实现
jsp中的请求转发可利用forward动作实现:
<jsp:forword>
Servlet中实现请求转发的方式为:
getServletContext(),getRequestDispatcher(path).forward(req,res);
14.jsp乱码如何解决
- 1).JSP页面乱码
<%@page contentType="text/heml;charset=utf-8"%>
- 2).表单提交中文时出现乱码
request.serCharacterEncoding("utf-8");
- 3).数据库连接出现乱码
在数据库连接中加入useUnicode=true&characterEncoding=utf-8;
15.sesion和application的区别
- 1).两者的作用范围不同:
1.Session对象是用户级别的,而application是应用程序级别的 2.一个用户一个session对象,每个用户的session对象不同,在用户所访问的网站多个页面之间共享一个session对象 3.一个web应用程序一个application对象,每个web应用程序的application对象不同,但一个web应用程序的多个用户 之间共享一个application对象
- 2).两者的生命周期不同:
1.session对象的生命周期:用户首次访问网站创建,用户离开该网站(不一定要关闭浏览器)消亡.也可以在web.xml中设置 session的过期时间,当超过过期时间后也会消亡 2.application对象的生命周期:启动web服务器创建,关闭web服务器销毁
16.JSP有哪些内置对象?作用分别是什么
JSP共有以下9大内置组件:
request:用户端请求,此请求会包含来自GET/POST请求的参数
response:网页传回用户端的回应
pageContext:网页的属性是在这里管理
session:与请求有关的会话期
application:Servlet正在执行的内容
out:用来传送回应的输出
config:Servlet的构架部件
page:JSP网页本身
Exception:针对错误网页,未捕捉的列外
17.JSP有哪些动作?作用分别是什么
JSP共有以下6种基本动作:
jsp:include: 在页面被请求的时候引入一个文件
jsp:useBean: 寻找或者实例化一个JavaBean
jsp:setProperty: 设置JavaBean的属性
jsp:getProperty: 输出某个JavaBean的属性
jsp:forward: 把请求转到一个新的页面
jsp:plugin: 根据浏览器类型为Java插件生成OBJECT或EMBED标记
18.JSP中动态Include与静态Include的区别
1.动态Include用jsp:include动作实现,<jsp:include page=included,jsp flush=true/>它总是会检查所含文件中的变化, 适合用于包含动态页面,并且可以带参数,先将嵌入的jsp页面编译,然后把编译后的内容放入到主页面进行处理,编译两次 2.静态Include用Include伪码实现,使用jsp指令应用<%@include file=include.htm%>,不会检查所含文件的变化,适用于包含 静态页面,先将内容包含到主页面然后在一起编译,只编译一次
19.jsp和Servlet有哪些相同点和不同点,他们之间的联系是什么
jsp是Servlet技术的发展,本质上是Servlet的简易方式,更强调应用的外表表达,jsp编译后是"类Servlet".Servlet和JSP做主要的不同点在于Servlet的应用逻辑是在java文件中,并且完全从表示层中的HTML里分离出来.而jsp的情况是java和HTML可以组合成一个扩展名为.jsp的文件.jsp侧重于视图,Servlet主要用于控制逻辑
20.页面传递对象的方法
request,session,appliction,cookie等
21.Cookied和session区别
- 1).cookie数据存放在客户的浏览器上,session数据放在服务器上
- 2).cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session
- 3).session会在一定时间内保存在服务器上.当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie
- 4).单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie
22.Filter的生命周期与执行过程
生命周期如下:
1.执行构造方法,实例化
2.执行init方法,初始化
3.执行doFilter方法,过滤用户请求
4.当Tomcat关闭时,执行destroy方法,进行销毁
构造方法与init方法在Tomcat启动时就执行,至始至终只执行一次,filter对象是单实例
执行过程如下:
1.浏览器发送一个请求,会到达Tomcat
2.Tomcat会根据项目中的web.xml中的Filter过滤路径配置,过滤请求
3.过滤到用户请求会进入Filter类中的doFilter方法
4.在doFilter方法中实现业务逻辑,最后调用doFilter(request,response)传递用户请求
5.到达用户请求的页面
23.Tomcat系统内存怎么配置
Windows
在Tomcat的bin/catalina.bat最前面加入set JAVA_OPTS=-Xms128m -Xmx350m
Linux
在Tomcat目录下的bin/catalina.sh添加:JAVA_OPTS='-Xms512m -Xmx1024m'
-Xms:初始值 -Xmx:最大值 -Xmn:最小值
24.JSTL标签库包含哪些
1.核心库(逻辑库) 用于页面上业务逻辑处理 2.函数库 利用jstl内置函数,获取结果 3.格式化库 格式化时间,格式化数字 4.SQL库(几乎不用) 操作数据库
[简言]
在爱与被爱的世界里,我们兜兜转转又回到原点!