国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

ui設(shè)計(jì)與網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣渠道都有哪些

ui設(shè)計(jì)與網(wǎng)站建設(shè),網(wǎng)絡(luò)推廣渠道都有哪些,網(wǎng)站布局設(shè)計(jì)規(guī)則,做網(wǎng)站就找喇叭人文章目錄1. 前置知識(shí)2.servlet生命周期2.1 默認(rèn)情況下,服務(wù)器啟動(dòng)時(shí),servlet對(duì)象并沒(méi)有被創(chuàng)建2.2 用戶執(zhí)行一次請(qǐng)求2.3用戶執(zhí)行第二次請(qǐng)求2.4 3,4,5,6....次請(qǐng)求2.5 關(guān)閉服務(wù)器3.servlet方法解析4.適配器模式改造servlet4.1不使用servlet模式4.2使用適配…

文章目錄

  • 1. 前置知識(shí)
  • 2.servlet生命周期
    • 2.1 默認(rèn)情況下,服務(wù)器啟動(dòng)時(shí),servlet對(duì)象并沒(méi)有被創(chuàng)建
    • 2.2 用戶執(zhí)行一次請(qǐng)求
    • 2.3用戶執(zhí)行第二次請(qǐng)求
    • 2.4 3,4,5,6....次請(qǐng)求
    • 2.5 關(guān)閉服務(wù)器
  • 3.servlet方法解析
  • 4.適配器模式改造servlet
    • 4.1不使用servlet模式
    • 4.2使用適配器模式
  • 5.GenericServlet
  • 6.ServletConfig詳解
  • 7.ServletConfig接口有四個(gè)方法
  • 8.ServletContext
  • 9.HttpServlet

1. 前置知識(shí)

  • 服務(wù)器啟動(dòng)時(shí),servlet對(duì)象是否被創(chuàng)建出來(lái)?
package com.sdnu.javaweb;import jakarta.servlet.*;import java.io.IOException;/*** 實(shí)現(xiàn)servlet接口** @author Beyong* @date 2023/03/03 20:44**/
public class AServlet implements Servlet {public AServlet() {System.out.println("A的無(wú)參構(gòu)造方法");}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}
package com.sdnu.javaweb;import jakarta.servlet.*;import java.io.IOException;/*** 實(shí)現(xiàn)Servlet** @author Beyong* @date 2023/03/03 20:49**/
public class BServlet implements Servlet {public BServlet() {System.out.println("B的無(wú)參構(gòu)造方法");}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>aServlet</servlet-name><servlet-class>com.sdnu.javaweb.AServlet</servlet-class></servlet><servlet-mapping><servlet-name>aServlet</servlet-name><url-pattern>/a</url-pattern></servlet-mapping><servlet><servlet-name>bServlet</servlet-name><servlet-class>com.sdnu.javaweb.BServlet</servlet-class></servlet><servlet-mapping><servlet-name>bServlet</servlet-name><url-pattern>/b</url-pattern></servlet-mapping>
</web-app>

在這里插入圖片描述
在控制臺(tái)發(fā)現(xiàn)沒(méi)有執(zhí)行構(gòu)造方法,說(shuō)明服務(wù)器啟動(dòng)的時(shí)候,構(gòu)造方法沒(méi)有執(zhí)行。

  • 如何使得服務(wù)器啟動(dòng)的時(shí)候,創(chuàng)建servlet對(duì)象
    在這里插入圖片描述
    在代碼中添加
<load-on-startup>數(shù)字</load-on-startup>

數(shù)字越小,則優(yōu)先級(jí)越高。

2.servlet生命周期

package com.sdnu.javaweb;import jakarta.servlet.*;import java.io.IOException;/*** 實(shí)現(xiàn)servlet接口** @author Beyong* @date 2023/03/03 20:44**/
public class AServlet implements Servlet {public AServlet() {System.out.println("A的無(wú)參構(gòu)造方法");}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("AServlet'init method execute");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("AServlet'service method execute");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {System.out.println("AServlet'destroy method execute ");}
}

2.1 默認(rèn)情況下,服務(wù)器啟動(dòng)時(shí),servlet對(duì)象并沒(méi)有被創(chuàng)建

2.2 用戶執(zhí)行一次請(qǐng)求

在這里插入圖片描述
結(jié)論:

  • 用戶在第一次請(qǐng)求的時(shí)候,Servlet對(duì)象被實(shí)例化,AServlet的構(gòu)造方法被執(zhí)行,并且執(zhí)行的是無(wú)參構(gòu)造。
  • AServlet對(duì)象被創(chuàng)建出來(lái)后,AServlet馬上執(zhí)行init方法
  • 第一次請(qǐng)求時(shí),init方法執(zhí)行后,馬上執(zhí)行service方法

2.3用戶執(zhí)行第二次請(qǐng)求

控制臺(tái)輸出:

AServlet’service method execute

2.4 3,4,5,6…次請(qǐng)求

后面的請(qǐng)求,Servlet對(duì)象并沒(méi)有創(chuàng)建,而是使用之前的創(chuàng)建好的Servlet對(duì)象,調(diào)用該對(duì)象的方法。

  • servlet對(duì)象是單例的,但是servlet類不符合單例模式(假單例)。

  • 無(wú)參構(gòu)造方法只執(zhí)行一次,init方法也只執(zhí)行一次,即第一次。

  • 只要用戶發(fā)送請(qǐng)求,service必然執(zhí)行。

2.5 關(guān)閉服務(wù)器

在這里插入圖片描述
服務(wù)器在關(guān)閉前,執(zhí)行servlet對(duì)象的destroy方法,destroy方法執(zhí)行結(jié)束后,AServlet對(duì)象的才會(huì)被銷毀,AServlet對(duì)象內(nèi)存才會(huì)釋放。

3.servlet方法解析

  • 構(gòu)造方法
    javaweb不建議手動(dòng)編寫(xiě)構(gòu)造方法,因?yàn)槭謩?dòng)編寫(xiě)構(gòu)造方法容易導(dǎo)致錯(cuò)誤,所以init方法很有必要。
  • init
    很少有,使用在初始化的時(shí)候,使用初始化數(shù)據(jù)連接池,線程池。
  • service
    一定要有,處理用戶的請(qǐng)求。
  • destroy
    進(jìn)行資源關(guān)閉。

4.適配器模式改造servlet

4.1不使用servlet模式

接口

package com.sdnu.javaweb.adapter;/*** 接口* @author Beyong* @date 2023/03/04 11:08**/
public interface MyInterface {void m1();void m2();void m3();void m4();void m5();void m6();void m7();void core();
}

UserService:

package com.sdnu.javaweb.adapter;/*** 用戶** @author Beyong* @date 2023/03/04 11:10**/
public class UserService implements MyInterface{@Overridepublic void m1() {}@Overridepublic void m2() {}@Overridepublic void m3() {}@Overridepublic void m4() {}@Overridepublic void m5() {}@Overridepublic void m6() {}@Overridepublic void m7() {}@Overridepublic void core() {System.out.println("UserService'core method execute!!!");}
}

CustomerService:

package com.sdnu.javaweb.adapter;/*** CustomerService** @author Beyong* @date 2023/03/04 11:13**/
public class CustomerService implements MyInterface{@Overridepublic void m1() {}@Overridepublic void m2() {System.out.println("Customer'm2 method execute");}@Overridepublic void m3() {}@Overridepublic void m4() {}@Overridepublic void m5() {}@Overridepublic void m6() {}@Overridepublic void m7() {}@Overridepublic void core() {}
}

不使用適配器模式下,則代碼每一個(gè)service都要取實(shí)現(xiàn)接口。

4.2使用適配器模式

接口:

package com.sdnu.javaweb.adapter2;/*** 接口* @author Beyong* @date 2023/03/04 11:24**/
public interface MyInterface {void m1();void m2();void m3();void m4();void m5();void m6();void m7();void core();
}

用戶適配器:

package com.sdnu.javaweb.adapter2;/*** UserService適配器** @author Beyong* @date 2023/03/04 11:26**/
public abstract class UserAdapter implements MyInterface{@Overridepublic void m1() {}@Overridepublic void m2() {}@Overridepublic void m3() {}@Overridepublic void m4() {}@Overridepublic void m5() {}@Overridepublic void m6() {}@Overridepublic void m7() {}public abstract void core();
}

顧客適配器:

package com.sdnu.javaweb.adapter2;/*** 客戶適配器** @author Beyong* @date 2023/03/04 11:28**/
public abstract class CustomerAdapter implements MyInterface{public abstract void m1();@Overridepublic void m2() {}@Overridepublic void m3() {}@Overridepublic void m4() {}@Overridepublic void m5() {}@Overridepublic void m6() {}@Overridepublic void m7() {}@Overridepublic void core() {}
}

用戶:

package com.sdnu.javaweb.adapter2;/*** 普通用戶** @author Beyong* @date 2023/03/04 11:34**/
public class UserService extends UserAdapter{@Overridepublic void core() {}
}

顧客:

package com.sdnu.javaweb.adapter2;/*** 顧客** @author Beyong* @date 2023/03/04 11:35**/
public class CustomerService extends CustomerAdapter{@Overridepublic void m1() {}
}

5.GenericServlet

我們寫(xiě)一個(gè)通用的GenericServlet

package com.sdnu.javaweb.servlet;import jakarta.servlet.*;import java.io.IOException;/*** servlet適配器** @author Beyong* @date 2023/03/04 11:48**/
public abstract class GenericServlet implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}public abstract void service(ServletRequest servletRequest, ServletResponse servletResponse);@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

LoginServlet

package com.sdnu.javaweb.servlet;import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;/*** c的servlet** @author Beyong* @date 2023/03/04 11:49**/
public class LoginServlet extends GenericServlet{@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) {System.out.println("c'service method execute");}
}

web.xml

    <servlet><servlet-name>loginServlet</servlet-name><servlet-class>com.sdnu.javaweb.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>loginServlet</servlet-name><url-pattern>/login</url-pattern></servlet-mapping>

地址:http://127.0.0.1:8080/lifecycle/login
在這里插入圖片描述

進(jìn)一步改造:

package com.sdnu.javaweb.servlet;import jakarta.servlet.*;import java.io.IOException;/*** servlet適配器** @author Beyong* @date 2023/03/04 11:48**/
public abstract class GenericServlet implements Servlet {private ServletConfig config;@Overridepublic void init(ServletConfig config) throws ServletException {this.config = config;this.init();}/*** 這個(gè)init方法供子類重寫(xiě)*/public void init(){}@Overridepublic ServletConfig getServletConfig() {return null;}public abstract void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException;@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

6.ServletConfig詳解

  • 什么是ServletConfig
    ServletConfig是Servlet規(guī)范中的一員。
  • Tomcat實(shí)現(xiàn)了ServletConfig接口
  • 一個(gè)Servlet對(duì)應(yīng)一個(gè)ServletConfig
  • Servlet對(duì)象是Tomcat創(chuàng)建的,同時(shí)創(chuàng)建了ServletConfig.
  • 創(chuàng)建一個(gè)Servelt對(duì)象,就有一個(gè)ServletConfig(Servlet對(duì)象信息)。
  • Tomcat解析web.xml文件,將web.xml文件中
 <servlet></servlet>

標(biāo)簽中的配置信息自動(dòng)包裝到ServletConfig對(duì)象中去。

  • ServletConfjg有哪些方法?
    getInitParameterNames
    getInitParameter
package com.sdnu.javaweb.servlet;import jakarta.servlet.*;
import sun.plugin2.util.ParameterNames;import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;/*** servletConfig測(cè)試2** @author Beyong* @date 2023/03/06 13:05**/
public class ConfigServletTest2 extends GenericServlet {@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {servletResponse.setContentType("text/html");PrintWriter out = servletResponse.getWriter();ServletConfig config = this.getServletConfig();out.print("servletConfig對(duì)象是:" + config.toString());out.print("</br>");String servletName = config.getServletName();out.print("<servlet>" + servletName + "</servlet>");out.print("</br>");Enumeration<String> initParameterNames = config.getInitParameterNames();while(initParameterNames.hasMoreElements()){String parameterName = initParameterNames.nextElement();String parameterVal = config.getInitParameter(parameterName);out.print(parameterName + "=" + parameterVal);out.print("<br>");}String driver = config.getInitParameter("driver");out.print(driver);//        Enumeration<String> names = this.getInitParameterNames();
//        while(names.hasMoreElements()){
//            String name = names.nextElement();
//            String value = this.getInitParameter(name);
//            out.print(name + " = " + value);
//            out.print("<br>");
//        }}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>configTest</servlet-name><servlet-class>com.sdnu.javaweb.servlet.ConfigServletTest</servlet-class></servlet><servlet-mapping><servlet-name>configTest</servlet-name><url-pattern>/test</url-pattern></servlet-mapping><servlet><servlet-name>configTest2</servlet-name><servlet-class>com.sdnu.javaweb.servlet.ConfigServletTest2</servlet-class><init-param><param-name>driver</param-name><param-value>com.mysql.cj.jdbc.Driver</param-value></init-param><init-param><param-name>url</param-name><param-value>jdbc:mysql://localhost:3306/sdnu</param-value></init-param><init-param><param-name>user</param-name><param-value>root</param-value></init-param><init-param><param-name>password</param-name><param-value>root123</param-value></init-param></servlet><servlet-mapping><servlet-name>configTest2</servlet-name><url-pattern>/test2</url-pattern></servlet-mapping>
</web-app>

7.ServletConfig接口有四個(gè)方法

  • public String getInitParameter(String name);
  • public Enumeration getInitParameterNames();
  • public ServletContext getServletContext();
  • public String getServletName();
    以上四個(gè)方法可以在自己編寫(xiě)的Servlet類中使用this調(diào)用,這個(gè)Servlet繼承了GenericServlet

8.ServletContext

  • ServletContext是接口,是Servlet規(guī)范的一員。
  • Tomcat實(shí)現(xiàn)了ServletContext接口。
  • ServletContext是服務(wù)器創(chuàng)建的,在服務(wù)器啟動(dòng)的時(shí)候創(chuàng)建,在服務(wù)器關(guān)閉的時(shí)候銷毀,對(duì)于一個(gè)WebApp來(lái)說(shuō),ServletContext只有一個(gè)。
  • ServletContext對(duì)象對(duì)應(yīng)整個(gè)web.xml。
  • ServletContext接口的方法:
    (1)
Enumeration<String> initParameterNames = application.getInitParameterNames();
String value = application.getInitParameter(name);

以上兩個(gè)方法獲取context-param標(biāo)簽中的name和value

    <context-param><param-name>startIndex</param-name><param-value>2</param-value></context-param>

(2獲取應(yīng)用的根路徑

String contextPath = application.getContextPath();

在這里插入圖片描述
(3)獲取文件的絕對(duì)路徑

public String getRealPath(String path)

(4)訪問(wèn)日志

public void log(String message);
public void log(String message, Throwable t);

Tomcat服務(wù)器的Log目錄下都有哪些日志信息?

catalina.2023-02-28.log 服務(wù)器的java程序運(yùn)行的控制信息
localhost.2023-03-07.log ServletContext對(duì)象的log方法記錄的日志存儲(chǔ)到這個(gè)文件中
localhost_access_log.2023-02-28.txt 訪問(wèn)日志

  • ServletContext又叫應(yīng)用域,放到ServletContext中的數(shù)據(jù)一般是數(shù)據(jù)量小,所以用戶共享的,不經(jīng)常修改的。

存:public void setAttribute(String name, Object value);
取:public void getAttribute(String name);
刪:public void removeAttribute(String name);

User user = new User("jack", "123456");
application.setAttribute("UserObj", user);
Object userObj = application.getAttribute("UserObj");
out.print(userObj);
out.print("</br>");

9.HttpServlet

jakarta.servlet.Servlet 【接口】
jakarta.servlet.GenericServlet implements Servlet 【抽象類】
jakarta.servlet.http.HttpServlet extends GenericServlet 【類】

以后編寫(xiě)程序繼承HttpServlet

在這里插入圖片描述

作者:Beyong    
出處:Beyong博客
github地址:https://github.com/beyong2019

本博客中未標(biāo)明轉(zhuǎn)載的文章歸作者Beyong有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

http://aloenet.com.cn/news/36145.html

相關(guān)文章:

  • 網(wǎng)站一個(gè)人可以做嗎找培訓(xùn)機(jī)構(gòu)的網(wǎng)站
  • 網(wǎng)站建設(shè)技術(shù)分類aso具體優(yōu)化
  • 做中介開(kāi)什么網(wǎng)站如何搜索網(wǎng)頁(yè)關(guān)鍵詞
  • 湖北網(wǎng)站建設(shè)企業(yè)百度sem推廣具體做什么
  • 富平做網(wǎng)站中國(guó)職業(yè)培訓(xùn)在線平臺(tái)
  • 網(wǎng)站設(shè)計(jì)創(chuàng)意2023年6月疫情情況
  • 做ppt好用的網(wǎng)站廣告代發(fā)平臺(tái)
  • wen前端網(wǎng)站開(kāi)發(fā)日記外鏈的作用
  • 清遠(yuǎn)企業(yè)網(wǎng)站排名win7優(yōu)化教程
  • 權(quán)重較高網(wǎng)站深圳百度推廣聯(lián)系方式
  • 專注大連網(wǎng)站建設(shè)百度推廣登錄手機(jī)版
  • asp.net 網(wǎng)站訪問(wèn)量商品推廣與營(yíng)銷的方式
  • 京東商城網(wǎng)站設(shè)計(jì)酒店如何進(jìn)行網(wǎng)絡(luò)營(yíng)銷
  • 畫(huà)冊(cè)制作揭陽(yáng)seo推廣公司
  • 永嘉網(wǎng)站建設(shè)幾熱門關(guān)鍵詞
  • 山東美建站金華百度推廣公司
  • 開(kāi)發(fā)一個(gè)視頻網(wǎng)站要多少錢360優(yōu)化大師app下載
  • 南城區(qū)網(wǎng)站仿做網(wǎng)絡(luò)營(yíng)銷推廣與策劃
  • 05網(wǎng)亮點(diǎn)給力大試卷網(wǎng)站seo博客
  • 贛州信息港贛州熱線湖南seo網(wǎng)站多少錢
  • 我的世界做神器指令網(wǎng)站網(wǎng)絡(luò)平臺(tái)建站
  • 網(wǎng)站開(kāi)發(fā)難學(xué)嗎今天的新聞 聯(lián)播最新消息
  • 用vs2010做的網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)模板圖片
  • 陽(yáng)信做網(wǎng)站營(yíng)銷型網(wǎng)站建設(shè)費(fèi)用
  • 昆明做網(wǎng)站的個(gè)人淘寶seo搜索引擎原理
  • 南陽(yáng)做網(wǎng)站百度搜索引擎排名規(guī)則
  • 公司網(wǎng)站開(kāi)發(fā)交接注意事項(xiàng)seo研究中心怎么了
  • 做網(wǎng)站網(wǎng)絡(luò)seo優(yōu)化教程自學(xué)
  • wordpress 獲取根目錄上海seo網(wǎng)站推廣公司
  • 靜態(tài)網(wǎng)站開(kāi)發(fā)預(yù)期效果關(guān)鍵詞生成器 在線