經典Java面試題精解!

小夥伴們大家好啊!浙江優就業今天為大家帶來的是三道經典Java面試題~

經典Java面試題精解!

1、說一下表達式語言(EL)的隱式對象及其作用。

答:EL的隱式對象包括:pageContext、initParam(訪問上下文參數)、param(訪問請求參數)、paramValues、header(訪問請求頭)、headerValues、cookie(訪問cookie)、applicationScope(訪問application作用域)、sessionScope(訪問session作用域)、requestScope(訪問request作用域)、pageScope(訪問page作用域)。

用法如下所示:

${pageContext.request.method} ${pageContext[ "request"][ "method"]} ${pageContext.request["method"]} ${pageContext["request"].method} ${initParam.defaultEncoding} ${header["accept-language"]} ${headerValues[ "accept-language"][ 0]} ${cookie.jsessionid.value} ${sessionScope.loginUser.username}

補充:表達式語言的.和[]運算作用是一致的,唯一的差別在於如果訪問的屬性名不符合Java標識符命名規則,例如上面的accept-language就不是一個有效的Java標識符,那麼這時候就只能用[]運算符而不能使用.運算符獲取它的值

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、表達式語言(EL表達式)支持哪些運算符?

答:除了.和[]運算符,EL還提供了:

- 算術運算符:+、-、*、/或div、%或mod

- 關係運算符:==或eq、!=或ne、>或gt、>=或ge、\

- 邏輯運算符:&&或and、||或or、!或not

- 條件運算符:${statement? A : B}(跟Java的條件運算符類似)

- empty運算符:檢查一個值是否為null或者空(數組長度為0或集合中沒有元素也返回true)


分享到:


相關文章: