jsp/servlet部分[面试题]

上一篇文章[JavaScript/JQuery/Ajax部分(面试题)]


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中ForwardRedirect之间的区别)
400客户端请求有语法错误,不能被服务器识别
403服务器接收到请求,但是拒绝提供服务(认证失败)
404请求资源不存在
500服务器内部错误

8.HTTP请求的GET与POST方式的区别

Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GETPOST方法,
二者主要区别如下:

  • 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库(几乎不用)  操作数据库

[简言]
在爱与被爱的世界里,我们兜兜转转又回到原点!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值