Java经典面试题汇总:Java Web
1. JSP 和 servlet 有什么区别JSP 是 servlet 技术的扩展本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于 servlet 的应用逻辑是在 Java 文件中并且完全从表示层中的 html 里分离开来而 JSP 的情况是 Java 和 html 可以组合成一个扩展名为 JSP 的文件。JSP 侧重于视图servlet 主要用于控制逻辑。2. 什么是TomcatTomcat是一个免费的Web应用服务器Java编写的Web项目可以部署在上面用户在客户端请求时都是将请求发到Tomcat上Tomcat在将请求发到对应的项目上。3. Tomcat容器是如何创建Servlet类实例用到了什么原理当容器启动时会读取在webapps目录下所有的web应用中的web.xml文件然后对xml文件进行解析并读取servlet注册信息。然后将每个应用中注册的servlet类都进行加载并通过反射的方式实例化。有时候也是在第一次请求时实例化在servlet注册时加上1如果为正数则在一开始就实例化如果不写或为负数则第一次请求实例化。4. 拦截器和过滤器的区别?拦截器是基于java的反射机制的而过滤器是基于函数回调。拦截器不依赖与servlet容器过滤器依赖与servlet容器。拦截器只能对action请求起作用而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下文、值栈里的对象而过滤器不能访问。在action的生命周期中拦截器可以多次被调用而过滤器只能在容器初始化时被调用一次。5.说一下 JSP 的 4 种作用域page代表与一个页面相关的对象和属性。request代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面涉及多个 Web 组件需要在页面显示的临时数据可以置于此作用域。session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的 session 中。application代表与整个 Web 应用程序相关的对象和属性它实质上是跨越整个 Web 应用程序包括多个页面、请求和会话的一个全局作用域。6. JSP 有哪些内置对象作用分别是什么JSP 有 9 大内置对象request封装客户端的请求其中包含来自 get 或 post 请求的参数response封装服务器对客户端的响应pageContext通过该对象可以获取其他对象session封装用户会话的对象application封装服务器运行环境的对象out输出服务器响应的输出流对象configWeb 应用的配置对象pageJSP 页面本身相当于 Java 程序中的 thisexception封装页面抛出异常的对象。7. Servlet的生命周期servlet有良好的生存期的定义包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.servlet接口中的init、service、destroy方法表达。1加载和实例化当Servlet容器启动或客户端发送一个请求时Servlet容器会查找内存中是否存在该Servlet实例若存在则直接读取该实例响应请求如果不存在就创建一个Servlet实例。2 初始化实例化后Servlet容器将调用Servlet的init()方法进行初始化一些准备工作或资源预加载工作。3服务初始化后Servlet处于能响应请求的就绪状态。当接收到客户端请求时调用service()的方法处理客户端请求HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。4销毁当Servlet容器关闭时Servlet实例也随时销毁。其间Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放或回收资源。8. session 和 cookie 有什么区别存储位置不同session 存储在服务器端cookie 存储在浏览器端。安全性不同cookie 安全性一般在浏览器存储可以被伪造和修改。容量和个数限制cookie 有容量限制每个站点下的 cookie 也有个数限制。存储的多样性session 可以存储在 Redis 中、数据库中、应用程序中而 cookie 只能存储在浏览器中。9. 说一下 session 的工作原理session 的工作原理是客户端登录完成之后服务器会创建对应的 sessionsession 创建完之后 会把 session 的 id 发送给客户端客户端再存储到浏览器中。这样客户端每次访问服务器时都会带着 sessionid 服务器拿到 sessionid 之后在内存找到与之对应的 session 这样就可以正常工作了。10. 如果客户端禁止 cookie 能实现 session 还能用吗?可以用session 只是依赖 cookie 存储 sessionid如果 cookie 被禁用了 可以使用 url 中添加 sessionid 的方式保证 session 能正常使用。11. JSP工作原理1当用户访问一个JSP页面时会向一个Servlet容器Tomcat发出请求2如果是第一次请求页面或页面有所改动则servlet容器首先要把JSP页面假设为test.jsp转化为Servlet代码test.java再将其转化为test.class文件因为这个过程编译会耗费一定时间所以第一次访问或jsp文件有改动时访问时间有些长3JSP容器负责调用从JSP转换来的servlet这些servlet负责提供服务相应用户请求比如客户端发送表单要求servletformprocessor.java来处理则容器会建立一个线程调用formprocessor.java来处理该请求如果用户有多个请求则容器会建立多个线程处理多个请求4容器执行字节码文件包括调用的servletformprocessor.java字节吗并将其结果返回到客户端返回的最终方式是由servlet输出html格式的文件流12. JSP中动态include和静态include的区别静态include语法% include file文件名 %相当于复制编辑时将对应的文件包含进来当内容变化时不会再一次对其编译不易维护。动态include语法jsp:include page文件名,能够自动检查被包含文件当客户端对JSP文件进行请求时会重新将对应的文件包含进来进行实时的更新。13、JSTL是什么优点有哪些答JSTLJSP Standard Tag LibraryJSP标准标签库是一个不断完善的开放源代码的JSP标签库由四个定制标记库core、format、xml、sql和一对通用标记库验证器ScriptFreeTLV和PermittedTaglibsTLV组成。优点有在应用程序服务器之间提供了一致的接口最大程度的提高了web应用在各应用服务器之间的移植。简化了JSP和web应用程序的开发。以一种统一的方式减少了JSP中scriptlet代码数据可以达到没有任何scriptlet代码的代码。在我们公司的项目中是不允许任何scriptlet出现在JSP中。允许JSP设计工具与web应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。14. GET和POST的区别POST和GET都是向服务器提交数据并且都会从服务器获取数据。1、传送方式get通过地址栏传输post通过报文传输。2、传送长度get参数有长度限制受限于url长度而post无限制3、GET和POST还有一个重大区别简单的说GET产生一个TCP数据包POST产生两个TCP数据包长的说对于GET方式的请求浏览器会把http header和data一并发送出去服务器响应200返回数据而对于POST浏览器先发送header服务器响应100 continue浏览器再发送data服务器响应200 ok返回数据。建议1、get方式的安全性较Post方式要差些包含机密信息的话建议用Post数据提交方式2、在做数据查询时建议用Get方式而在做数据添加、修改或删除时建议用Post方式15. 什么是 XSS 攻击如何避免XSS 攻击即跨站脚本攻击它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码css 代码、Javascript 代码等当用户浏览该页面时嵌入其中的脚本代码会被执行从而达到恶意攻击用户的目的如盗取用户 cookie、破坏页面结构、重定向到其他网站等。 预防 XSS 的核心是必须对输入的数据做过滤处理。16. 什么是 CSRF 攻击如何避免CSRFCross-Site Request Forgery中文跨站请求伪造可以理解为攻击者盗用了你的身份以你的名义发送恶意请求比如以你名义发送邮件、发消息、购买商品虚拟货币转账等。 防御手段 验证请求来源地址 关键操作添加验证码 在请求地址添加 token 并验证。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2571805.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!