QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 163|回复: 0
收起左侧

Java精品面试题来啦!附带答案详解

[复制链接]
发表于 2018-11-11 16:29:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册加入

×
小伙伴们大家好啊!今天浙江优就业继续为大家提供精品Java面试题啦~
I1CeU11B9mFYzez3.jpg

1、Servlet 3中的异步处理指的是什么?
答:在Servlet 3中引入了一项新的技术可以让Servlet异步处理请求。有人可能会质疑,既然都有多线程了,还需要异步处理请求吗?答案是肯定的,因为如果一个任务处理时间相当长,那么Servlet或Filter会一直占用着请求处理线程直到任务结束,随着并发用户的增加,容器将会遭遇线程超出的风险,这这种情况下很多的请求将会被堆积起来而后续的请求可能会遭遇拒绝服务,直到有资源可以处理请求为止。异步特性可以帮助应用节省容器中的线程,特别适合执行时间长而且用户需要得到结果的任务,如果用户不需要得到结果则直接将一个Runnable对象交给Executor并立即返回即可。
补充:多线程在Java诞生初期无疑是一个亮点,而Servlet单实例多线程的工作方式也曾为其赢得美名,然而技术的发展往往会颠覆我们很多的认知,就如同当年爱因斯坦的相对论颠覆了牛顿的经典力学一般。事实上,异步处理绝不是Serlvet 3首创,如果你了解Node.js的话,对Servlet 3的这个重要改进就不以为奇了。
下面是一个支持异步处理请求的Servlet的例子。
importjava.io.IOException; importjavax.servlet.AsyncContext; importjavax.servlet.ServletException; importjavax.servlet.annotation.WebServlet; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = { "/async"}, asyncSupported = true) publicclassAsyncServletextendsHttpServlet{privatestaticfinallongserialVersionUID = 1L; @OverridepublicvoiddoGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException { // 开启Tomcat异步Servlet支持req.setAttribute( "org.apache.catalina.ASYNC_SUPPORTED", true); finalAsyncContext ctx = req.startAsync(); // 启动异步处理的上下文// ctx.setTimeout(30000);ctx.start( newRunnable() { @Overridepublicvoidrun() { // 在此处添加异步处理的代码ctx.complete(); } }); } }
2、如何在基于Java的Web项目中实现文件上传和下载?
答:在Sevlet 3 以前,Servlet API中没有支持上传功能的API,因此要实现上传功能需要引入第三方工具从POST请求中获得上传的附件或者通过自行处理输入流来获得上传的文件,我们推荐使用Apache的commons-fileupload。
从Servlet 3开始,文件上传变得无比简单,相信看看下面的例子一切都清楚了。
上传页面index.jsp:
Select your photo and upload
${hint}
Photo file:
支持上传的Servlet:
packagecom.jackfrued.servlet; importjava.io.IOException; importjavax.servlet.ServletException; importjavax.servlet.annotation.MultipartConfig; importjavax.servlet.annotation.WebServlet; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; importjavax.servlet.http.Part; @WebServlet( "/UploadServlet") @MultipartConfigpublicclassUploadServletextendsHttpServlet{privatestaticfinallongserialVersionUID = 1L; protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException { // 可以用request.getPart()方法获得名为photo的上传附件// 也可以用request.getParts()获得所有上传附件(多文件上传)// 然后通过循环分别处理每一个上传的文件Part part = request.getPart( "photo"); if(part != null&& part.getSubmittedFileName().length() > 0) { // 用ServletContext对象的getRealPath()方法获得上传文件夹的绝对路径String savePath = request.getServletContext().getRealPath( "/upload"); // Servlet 3.1规范中可以用Part对象的getSubmittedFileName()方法获得上传的文件名// 更好的做法是为上传的文件进行重命名(避免同名文件的相互覆盖)part.write(savePath + "/"+ part.getSubmittedFileName()); request.setAttribute( "hint", "Upload Successfully!"); } else{ request.setAttribute( "hint", "Upload failed!"); } // 跳转回到上传页面request.getRequestDispatcher( "index.jsp").forward(request, response); } }
3、服务器收到用户提交的表单数据,到底是调用Servlet的doGet()还是doPost()方法?
答:HTML的\
< %--静态包含 --%> < %--动态包含 --%> < jsp:includepage= "..."> < jsp:param name= "..."value= "..."/> < /jsp:include>
4、Servlet中如何获取用户提交的查询参数或表单数据?
答:可以通过请求对象(HttpServletRequest)的getParameter()方法通过参数名获得参数值。如果有包含多个值的参数(例如复选框),可以通过请求对象的getParameterValues()方法获得。当然也可以通过请求对象的getParameterMap()获得一个参数名和参数值的映射(Map)。
5、Servlet中如何获取用户配置的初始化参数以及服务器上下文参数?
答:可以通过重写Servlet接口的init(ServletConfig)方法并通过ServletConfig对象的getInitParameter()方法来获取Servlet的初始化参数。可以通过ServletConfig对象的getServletContext()方法获取ServletContext对象,并通过该对象的getInitParameter()方法来获取服务器上下文参数。当然,ServletContext对象也在处理用户请求的方法(如doGet()方法)中通过请求对象的getServletContext()方法来获得。
欢迎来到【天府同城大成都】-天府四川的吃喝玩乐—生活消费媒体网站!请记住我们的域名www.fqtc.com
您需要登录后才可以回帖 登录 | 注册加入

本版积分规则

×本站发帖友情提示
1、注册用户在本站发表/转载的任何作品仅代表其个人观点,不代表本站立场。
2、如果存在违反国家相关法律、法规、条例的行为,我们有权在不经作者准许的情况下删除其在本站所发表的文章。
3、所有网友不要盗用有明确版权要求的作品,转贴请注明来源,否则文责自负。如有侵犯您的权益请联系我们及时删除。
4、本站保护注册用户个人资料,但是在自身原因导致个人资料泄露、丢失、被盗或篡改,本站概不负责,也不承担相应法律责任。

关闭

站长推荐上一条 /1 下一条

客服热线
400-1234-888 周一至周日:09:00 - 21:00
公司地址:北京市朝阳区科技路88号现代城5号楼

天府生活网(www.fqtc.com)四川生活网为你提供房产、招聘、黄页、团购、交友、二手、宠物、车辆、周边游、本地生活、供求信息等海量分类信息,是专业,免费,高效的本地生活信息服务平台。

Powered by Discuz! X3.5 © 2001-2013 Comsenz Inc.

QQ|广告报价|小黑屋|Archiver|手机版|免责声明|大成都 ( 蜀ICP备19006310号-4 )

GMT+8, 2024-11-23 09:57 , Processed in 0.125662 second(s), 23 queries .

快速回复 返回顶部 返回列表