Java面试题分享-servlet

问:servlet的生命周期
答:当服务器启动的时候生命周期开始,然后通过init(),方法初始化servlet,再根据不同请求调用doGet或doPost方法,最后再通过destroy()方法进行销毁。

问:get和post的区别
答:在页面提交数据时,get的数据大小有限制4k,post没有限制,get请求提交的数据会在地址栏显示,post不显示,所以post比get安全。

问:如何处理Servlet的线程不安全问题
答:最简单的就是不使用不去使用实例变量,使用final修饰变量,可以在Servlet的线程里面加上同步方法或同步块。

问:Jsp的重定向和转发的流程有什么区别
答:重定向是客户端行为,转发是服务器端行为,重定向时服务器产生两次请求,重定向会导致request对象信息丢失,转发则不会,转发的url不会变,request.getRequestDispatch().forward(),重定向的url会改变,response.getRedirect().sendRedirect()。

问:Session的主要几个方法的区别
答:Session不能通过new创建,需要通过调用getSession()或者getSession(true)方法创建,第一次创建session的时候,就是访问第一次一个jsp页面,销毁session调用invalidate方法,通过setMaxInactiveInterval()可以设定session的生存时间,web.xml可以设置session的生存时间。

问:JSP九大内置对象
答:pageContext :只对当前jsp页面有效,里面封装了基本的request和session的对象,Request :对当前请求进行封装,Session :浏览器会话对象,浏览器范围内有效,Application :应用程序对象,对整个web工程都有效 ,Out :页面打印对象,在jsp页面打印字符串 ,Response :返回服务器端信息给用户 ,Config :单个servlet的配置对象,相当于servletConfig对象 ,Page :当前页面对象,也就是this ,Exception :错误页面的exception对象。

问:JSP三大指令
答:Page :指令是针对当前页面的指令,Include :用于指定如何包含另一个页面,Taglib :用于定义和指定自定义标签。

问:JSP七大动作
答:Forward: 执行页面跳转将请求的处理转发到另一个页面,Param :用于传递参数,Include :用于动态引入一个jsp页面 ,Plugin :用于下载javaBean或applet到客户端执行 ,useBean :使用javaBean,setProperty :修改javaBean实例的属性值 ,getProperty :获取javaBean实例的属性值。

问:会话跟踪有哪些,他们的区别是什么
答:隐藏域控件,cookie,session,application,cookie是http对象,客户端与服务端都可以操纵,cookie是在客户端保持状态,session是在服务器端保持状态,由于cookie是保存在客户端本地的,所以数据很容易被窃取,当访问量很多时,使用session则会降低服务器的性能,application的作用域是整个工程里只有一个,可以在不同浏览器之间共享数据,所有人都可以共享,因此application也是不安全的。

问:request,response,session和application是怎么用的
答:Request是客户端向服务端发送请求,Response是服务端对客户端请求做出响应,Session在servlet中不能直接使用,需要通过getSession()创建,如果没有设定它的生命周期,或者通过invildate()方法销毁,关闭浏览器session就会消失,Application不能直接创建,存在于服务器的内存中,由服务器创建和销毁。

问:为什么在session少放对象
答:因为session底层是由cookie实现的,当客户端的cookie被禁用后,session也会失效,且应尽量少向session中保存信息,session的数据保存在服务器端。

问:404和500是什么意思
答:404 :找不到url请求的路径,一般是工程名不对或者拼写错误,500 :服务器内部错误,一般是服务器内部代码编写错误,也有可能是抛异常导致。

问:写出5种JSTL常用标签
答:,,,,

问:怎么判断用户请求时是第一次,如果客户端和服务端断开怎么连到上一次操作
答:通过session中的isNew()可以判断是否是新用户,可以用cookie来保存信息到客户端,可以连接到上一次操作。

问:说明一下jsp中和<%@ include file%>的区别
答:静态包含在翻译的时候,将多个JSP合并翻译成了一个Servlert,动态包含在翻译的时候,每个JSP文件都翻译成了对应Servlet,在程序运行加载到JVM中的时候动态合并,动态包含可以传递参数。

你可能感兴趣的:(Java面试题分享-servlet)