六、Java Web模塊(Servlet、Tomcat)

六、Java Web模塊

0. 如何讓 Servlet在服務器啓動時就實例化?

在 web.xml中有加載項配置 <load-on-startup>0</load-on-startup>;默認值爲 -1,負數時表示當此 Servlet被請求時(即有用戶訪問時)纔會被加載;≥0時表示當此應用程序部署到 tomcat服務器(或其他服務器時)(即此應用被加載時)就會被加載,就會創建它的實例,調用其初始化方法(init());

初始化方法 init( ) 只調用一次,service()調用多次,destory()對於銷燬兩種情況:
① 此 web應用程序被重新加載;(重新創建 servelt實例,前面實例化的 servlet實例都會被銷燬,調用其 destory( ))
② 此 web應用所在的服務器停止了。

創建一個 Servlet 的過程?

① 繼承 HttpServlet;
② 重寫 Servlet /doGet() /doPost();
③ web.xml中配置;
多用註解:eg:

@WebServlet("/admin")
public class AdminServlet extends HttpServlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String op=req.getParameter("op");
        String tel=req.getParameter("tel");
        String password=req.getParameter("password");
        Admin admin=new Admin();
        admin.setTel(tel);
        admin.setPassword(password);
        if ("regist".equals(op)){
            doRegist(req,resp,tel,admin);
        }else {
            doLogin(req,resp,admin);
        }
    }
}  

在這裏插入圖片描述

Servlet 應用過濾器和監聽器

@WebFilter("/*")
public class EncodingFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        req.setCharacterEncoding("UTF-8");
        chain.doFilter(req,resp);
    }
    public void destroy() {
    }
}
@WebFilter("/*")
public class InitDataFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
    }
    public void destroy() {
    }
    public void doFilter(ServletRequest request, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req=(HttpServletRequest)request;
        List<Book> books= ServiceFactory.getService("book").findAll();
        req.setAttribute("books",books);       
        chain.doFilter(req,resp);
    }
}
public class TransactionFilter implements Filter{
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        try {
            TransactionManager.begin();
            chain.doFilter(req,resp);
            TransactionManager.commit();
        } catch (IOException e) {
            TransactionManager.rollback();
        }
    }
    public void destroy() {
    }
}

1. JSP和 Servlet的區別?

① jsp編譯後就是 servlet,因此 jsp本質上就是 servlet;
② jsp常用作展示層,servlet常用作控制層;
③ jsp容易編寫,servlet專業技術要求較高;
④ 最大不同在於:同下;
在這裏插入圖片描述

2. JSP的九大內置對象?

在這裏插入圖片描述

3. JSP的四種作用域?

在這裏插入圖片描述

3_1. JQuery對象與DOM對象如何轉換?

DOM——>JQuery: $(DOM對象) JQuery對象的製造工廠;
JQuery——>DOM: 通過 [index]、get[index]

3_2. JSP的生命週期

① jsp生成 .java文件;
② 編譯成 .class文件;
③ 加載 jsp.class類;
執行 class文件:
④ 實例化;
⑤ 初始化(jsp init);
⑥ 處理請求(jsp service);
⑦ 銷燬(jsp destory)

3_3. JSP中動態包含與靜態包含區別?

靜態包含:<%@ include file="1.jsp"%> ;用 include指令,發生在 jsp —> java文件階段即包含的動作是在 jsp被編譯成 java文件時執行的,只有第一次請求時執行,只生成一個 .java文件,不能動態傳遞參數;(a先將 b包含進來再一起編譯)
動態包含: <jsp:include page="1.jsp"...>;用<jsp:include>,發生在執行 class文件階段動態加入即包含的動作是在 jsp對應的 servlet處理請求時執行的,每次請求都會執行,生成多個 java文件,可以使用標籤傳遞參數,在被包含頁面中獲取;(動態包含是2個文件,jsp編譯生成2個 .java文件,再動態包含進來即先分開編譯再包含)

4. 轉發 forward 和 重定向 redirect有什麼區別?

① 地址欄: 轉發 url地址不變,重定向 url地址會變;
② 瀏覽器發送了幾次請求: 轉發:1次,重定向:2次;
③ 是否可進行 request數據共享:
轉發:兩個資源間是同一個 request對象,可共享 request中的數據;
重定向:兩個資源間不是同一個 request對象,不可以共享;
④ 轉發不支持跨域(當前工程內部跳轉),重定向可支持跨域。
在這裏插入圖片描述

5. GET請求 和 POST請求的區別?

① 攜帶請求參數的方式:
Get:通過請求頭攜帶參數,參數會顯示在 url地址欄;
Post:通過請求體攜帶參數,參數不會顯示在地址欄,更安全;
② 服務器端處理請求的方法:
Get:會調用 Servlet的 doGet()來處理請求;
Post:會調用 Servlet的 doPost()來處理請求;
③ 數據的大小與限制:
Get傳遞參數大小有限制(<2k);
Post傳遞參數大小沒有限制;

在這裏插入圖片描述

------------------------------------------------------------------------------------------

6. session的工作原理?

在這裏插入圖片描述

7. session和 cookie的區別?

在這裏插入圖片描述

8. 如果客戶端禁止 cookie能實現 session還能用嗎?

session和 cookie的區別?
在這裏插入圖片描述
------------------------------------------------------------------------------------------

9. springMVC和 struts的區別?

在這裏插入圖片描述

10. 如何避免 SQL注入?

在這裏插入圖片描述

11. 什麼是 XSS攻擊?如何避免?

在這裏插入圖片描述

12. 什麼是 CSRF攻擊?如何避免?

在這裏插入圖片描述
CSRF代表跨站請求僞造。這是一種攻擊,迫使最終用戶在當前通過身份驗證的Web應用程序上執行不需要的操作。CSRF攻擊專門針對狀態改變請求,而不是數據竊取,因爲攻擊者無法查看對僞造請求的響應。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章