中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Servlet程序實例分析

發布時間:2022-07-19 17:32:03 來源:億速云 閱讀:153 作者:iii 欄目:編程語言

本篇內容介紹了“Java Servlet程序實例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Java Servlet程序實例分析

Servlet運行在服務端(tomcat)的java程序。是sun公司的一套規范,就是動態資源。

Servlet作用

用來接收客戶端的請求,處理請求,響應給瀏覽器的動態資源。

但Servlet本質就是java代碼,通過java的API動態的向客戶端傳輸數據內容。

Servlet與普通的java程序的區別

1,必須實現Servlet接口

2,必須在servlet容器(tomcat服務器)中運行

3,servlet程序可以接收用戶請求的參數以及向瀏覽器輸出數據。

Servlet接口并不是JDK中的接口,所以我們需要導入jar包。javaweb項目是在WEB-INF/lib目錄中存放jar包。tomcat是一個庫,里面有Servlet的jar包,所以我們可以不用在lib目錄中導入了。通過maven也可以依賴。

Java Servlet程序實例分析

怎么通過瀏覽器訪問Servlet呢?

可以通過配置web.xml映射路徑,使用場景:不是自己寫的Servlet,或者jar包中的Servlet,你沒法在別人寫的代碼上加注解,所以就得使用配置web.xml映射路徑的方式去使用別人寫的servlet.

  <servlet>
         <!--自定義,一般為類名-->
         <servlet-name>servletDemo1</servlet-name>
         <!--一定是package + .類名-->
         <servlet-class>day08_servlet.ServletDemo1</servlet-class>
     </servlet>
     <!--給Servlet提供(映射)一個可供客戶端訪問的URI-->
     <servlet-mapping>
         <!--和servlet中的name必須相同-->
         <servlet-name>servletDemo1</servlet-name>
         <!-- servlet的映射路徑 -->
         <!-- 全路徑匹配/servlet 或者/*通配符匹配 或者擴展名匹配*.do-->
         <url-pattern>/servlet</url-pattern>
     </servlet-mapping>

第二種方式@WebServlet注解。自己寫的Servlet通過注解@WebServlet方式比較方便

@WebServlet(name = "helloServlet", value = "/hello-servlet")

Servlet生命周期:

1,默認是第一次有請求訪問這個servlet的時候創建,創建出來之后會將這個Servlet的對象存儲到tomcat容器當中。

2,當服務關閉時,Servlet對象才會銷毀

Servlet生命周期方法:

1,init()會在Servlet初始化出來的時候使用,會調用一次

能否配置Servlet在服務器啟動的時候就創建呢?

可以在web.xml中配置,例如DefaultServlet(靜態資源訪問)就是在tomcat的配置文件中配置好了

Java Servlet程序實例分析

如果不用配置文件配置可以使用@WebServlet注解中的loadOnStarup配置。

2,service()會在Servlet接收到請求時候調用

3,destroy()會在servlet對象被銷毀之前調用

ServletConfig對象的介紹;用于獲取servlet配置時候的初始化參數的

Java Servlet程序實例分析


idea新建一個Servlet快捷方式

Java Servlet程序實例分析

HttpServletRequest

請求轉發:只能轉發到項目類的路徑,并且瀏覽器端url不跳轉,原理是服務器請求轉發

request.getRequestDispatcher("/test.jsp").forward(request, response);

如果一個資源在WEB-INF目錄下,只能使用請求轉發才能訪問到

request作為域對象,可以在不同的Servlet之間進行數據共享,但是它只能在同一次請求中進行數據共享。

HttpServletResponse

HttpServletResponse詳解_平庸的俗人的博客-CSDN博客_httpservletresponse

向客戶端寫數據

        //用字符流向瀏覽器輸出文本
        PrintWriter writer = response.getWriter();
        //write()方法只能輸出字符串,如果輸入int,float等類型,則會有問題
        writer.write("嘻嘻");
        //println方法可以輸出純數字,字符串
        writer.println(88);

        //1.獲取字節輸出流
        ServletOutputStream sos = response.getOutputStream();
        //2.輸出數據
        sos.write("hello你好".getBytes("utf-8"));

ServletContext作用

作為域對象存取數據,讓Servlet共享,所有的請求都可以進行數據共享

ServletContext servletContext = getServletContext();
servletContext.setAttribute("username","zhangsan");
servletContext.getAttribute("username");

獲得文件的MIME類型(文件下載)

ServletContext servletContext = getServletContext();
servletContext.getMimeType("文件名");

獲得全局初始化參數

獲得web資源路徑,可以將web資源轉換為字節輸入流

@WebServlet(name = "Test2Servlet", value = "/Test2Servlet")
public class Test2Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**
         * 把文件轉成流的幾種方式
         */
        //方式一
        FileInputStream fileInputStream = new FileInputStream("E:\\java重新學習\\demo\\src\\main\\webapp\\2222.jpg");

        //方式二,使用類加載器將文件轉換成流
        //只能讀取到resources目錄下面的文件,
        //resources是類路徑,編譯后的路徑classes。
        //Test2Servlet.class.getClassLoader()類加載器默認能找到類路徑(classes)
        //如果你要找webapp下路徑的文件得../../
        InputStream resourceAsStream = Test2Servlet.class.getClassLoader().getResourceAsStream("2222.jpg");

        //使用ServletContext可以獲取webapp里面資源的真實路徑
        ServletContext servletContext = getServletContext();
        String realPath = servletContext.getRealPath("2222.jpg");
        //然后通過真實路徑
        FileInputStream fileInputStream1 = new FileInputStream(realPath);
        //或者servletContext是webapp路徑
        InputStream resourceAsStream1 = servletContext.getResourceAsStream("2222.jpg");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}

在web項目中,將文件轉換成流,通常使用這兩種方式:

1,如果文件在resources中,就使用類加載器

2,如果文件在webapp目錄下,就使用ServletContext

“Java Servlet程序實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

花莲县| 南充市| 三穗县| 罗山县| 托克托县| 普兰店市| 衡阳市| 德昌县| 万安县| 杭锦旗| 巫溪县| 武清区| 石河子市| 湘阴县| 临汾市| 德保县| 黑龙江省| 长寿区| 苗栗县| 鸡东县| 湘潭县| 南川市| 唐河县| 望城县| 修武县| 洪湖市| 仙居县| 无棣县| 友谊县| 积石山| 陈巴尔虎旗| 五家渠市| 恭城| 陆丰市| 东乌珠穆沁旗| 隆尧县| 新晃| 汝南县| 游戏| 吴江市| 南岸区|