当前位置: 首页 > news >正文

什么是网站平台开发国外网站注册

什么是网站平台开发,国外网站注册,微网站的建设第一步是什么,企业注册号查询系统文章目录1. 前置知识2.servlet生命周期2.1 默认情况下#xff0c;服务器启动时#xff0c;servlet对象并没有被创建2.2 用户执行一次请求2.3用户执行第二次请求2.4 3,4,5,6....次请求2.5 关闭服务器3.servlet方法解析4.适配器模式改造servlet4.1不使用servlet模式4.2使用适配… 文章目录1. 前置知识2.servlet生命周期2.1 默认情况下服务器启动时servlet对象并没有被创建2.2 用户执行一次请求2.3用户执行第二次请求2.4 3,4,5,6....次请求2.5 关闭服务器3.servlet方法解析4.适配器模式改造servlet4.1不使用servlet模式4.2使用适配器模式5.GenericServlet6.ServletConfig详解7.ServletConfig接口有四个方法8.ServletContext9.HttpServlet1. 前置知识 服务器启动时servlet对象是否被创建出来 package com.sdnu.javaweb;import jakarta.servlet.*;import java.io.IOException;/*** 实现servlet接口** author Beyong* date 2023/03/03 20:44**/ public class AServlet implements Servlet {public AServlet() {System.out.println(A的无参构造方法);}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;/*** 实现Servlet** author Beyong* date 2023/03/03 20:49**/ public class BServlet implements Servlet {public BServlet() {System.out.println(B的无参构造方法);}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 version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-nameaServlet/servlet-nameservlet-classcom.sdnu.javaweb.AServlet/servlet-class/servletservlet-mappingservlet-nameaServlet/servlet-nameurl-pattern/a/url-pattern/servlet-mappingservletservlet-namebServlet/servlet-nameservlet-classcom.sdnu.javaweb.BServlet/servlet-class/servletservlet-mappingservlet-namebServlet/servlet-nameurl-pattern/b/url-pattern/servlet-mapping /web-app在控制台发现没有执行构造方法说明服务器启动的时候构造方法没有执行。 如何使得服务器启动的时候创建servlet对象 在代码中添加 load-on-startup数字/load-on-startup数字越小则优先级越高。 2.servlet生命周期 package com.sdnu.javaweb;import jakarta.servlet.*;import java.io.IOException;/*** 实现servlet接口** author Beyong* date 2023/03/03 20:44**/ public class AServlet implements Servlet {public AServlet() {System.out.println(A的无参构造方法);}Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println(AServletinit method execute);}Overridepublic ServletConfig getServletConfig() {return null;}Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println(AServletservice method execute);}Overridepublic String getServletInfo() {return null;}Overridepublic void destroy() {System.out.println(AServletdestroy method execute );} }2.1 默认情况下服务器启动时servlet对象并没有被创建 2.2 用户执行一次请求 结论 用户在第一次请求的时候Servlet对象被实例化AServlet的构造方法被执行并且执行的是无参构造。AServlet对象被创建出来后AServlet马上执行init方法第一次请求时init方法执行后马上执行service方法 2.3用户执行第二次请求 控制台输出 AServlet’service method execute 2.4 3,4,5,6…次请求 后面的请求Servlet对象并没有创建而是使用之前的创建好的Servlet对象调用该对象的方法。 servlet对象是单例的但是servlet类不符合单例模式假单例。 无参构造方法只执行一次init方法也只执行一次即第一次。 只要用户发送请求service必然执行。 2.5 关闭服务器 服务器在关闭前执行servlet对象的destroy方法destroy方法执行结束后AServlet对象的才会被销毁AServlet对象内存才会释放。 3.servlet方法解析 构造方法 javaweb不建议手动编写构造方法因为手动编写构造方法容易导致错误所以init方法很有必要。init 很少有使用在初始化的时候使用初始化数据连接池线程池。service 一定要有处理用户的请求。destroy 进行资源关闭。 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(UserServicecore 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(Customerm2 method execute);}Overridepublic void m3() {}Overridepublic void m4() {}Overridepublic void m5() {}Overridepublic void m6() {}Overridepublic void m7() {}Overridepublic void core() {} }不使用适配器模式下则代码每一个service都要取实现接口。 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 我们写一个通用的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(cservice method execute);} } web.xml servletservlet-nameloginServlet/servlet-nameservlet-classcom.sdnu.javaweb.servlet.LoginServlet/servlet-class/servletservlet-mappingservlet-nameloginServlet/servlet-nameurl-pattern/login/url-pattern/servlet-mapping地址http://127.0.0.1:8080/lifecycle/login 进一步改造 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();}/*** 这个init方法供子类重写*/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规范中的一员。Tomcat实现了ServletConfig接口一个Servlet对应一个ServletConfigServlet对象是Tomcat创建的同时创建了ServletConfig.创建一个Servelt对象就有一个ServletConfigServlet对象信息。Tomcat解析web.xml文件将web.xml文件中 servlet/servlet标签中的配置信息自动包装到ServletConfig对象中去。 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测试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对象是 config.toString());out.print(/br);String servletName config.getServletName();out.print(servlet servletName /servlet);out.print(/br);EnumerationString 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);// EnumerationString names this.getInitParameterNames(); // while(names.hasMoreElements()){ // String name names.nextElement(); // String value this.getInitParameter(name); // out.print(name value); // out.print(br); // }} } ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-nameconfigTest/servlet-nameservlet-classcom.sdnu.javaweb.servlet.ConfigServletTest/servlet-class/servletservlet-mappingservlet-nameconfigTest/servlet-nameurl-pattern/test/url-pattern/servlet-mappingservletservlet-nameconfigTest2/servlet-nameservlet-classcom.sdnu.javaweb.servlet.ConfigServletTest2/servlet-classinit-paramparam-namedriver/param-nameparam-valuecom.mysql.cj.jdbc.Driver/param-value/init-paraminit-paramparam-nameurl/param-nameparam-valuejdbc:mysql://localhost:3306/sdnu/param-value/init-paraminit-paramparam-nameuser/param-nameparam-valueroot/param-value/init-paraminit-paramparam-namepassword/param-nameparam-valueroot123/param-value/init-param/servletservlet-mappingservlet-nameconfigTest2/servlet-nameurl-pattern/test2/url-pattern/servlet-mapping /web-app7.ServletConfig接口有四个方法 public String getInitParameter(String name);public Enumeration getInitParameterNames();public ServletContext getServletContext();public String getServletName(); 以上四个方法可以在自己编写的Servlet类中使用this调用这个Servlet继承了GenericServlet 8.ServletContext ServletContext是接口是Servlet规范的一员。Tomcat实现了ServletContext接口。ServletContext是服务器创建的在服务器启动的时候创建在服务器关闭的时候销毁对于一个WebApp来说ServletContext只有一个。ServletContext对象对应整个web.xml。ServletContext接口的方法 1 EnumerationString initParameterNames application.getInitParameterNames(); String value application.getInitParameter(name);以上两个方法获取context-param标签中的name和value context-paramparam-namestartIndex/param-nameparam-value2/param-value/context-param2获取应用的根路径 String contextPath application.getContextPath();3获取文件的绝对路径 public String getRealPath(String path)(4)访问日志 public void log(String message); public void log(String message, Throwable t);Tomcat服务器的Log目录下都有哪些日志信息 catalina.2023-02-28.log 服务器的java程序运行的控制信息 localhost.2023-03-07.log ServletContext对象的log方法记录的日志存储到这个文件中 localhost_access_log.2023-02-28.txt 访问日志 ServletContext又叫应用域放到ServletContext中的数据一般是数据量小所以用户共享的不经常修改的。 存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 【类】 以后编写程序继承HttpServlet 作者Beyong     出处Beyong博客 github地址https://github.com/beyong2019 本博客中未标明转载的文章归作者Beyong有欢迎转载但未经作者同意必须保留此段声明且在文章明显位置给出原文连接否则保留追究法律责任的权利。
http://www.hkea.cn/news/14383726/

相关文章:

  • 门户网站集群建设方案给公司做个网站多少钱
  • 湛江廉江网站建设做兼职女的网站
  • 图书馆网站建设教程专业定制网站建设哪里有
  • 闸北网站推广公司个人博客网站备案
  • 国外flash网站欣赏网站制作建立
  • 汕头网站上排名wordpress 少儿
  • 大型门户网站建设哪专业南沙区网站建设
  • 中国建设官方网站企业宁波seo网站建设费用
  • 手机网站开发指南seo哪家公司好
  • 怎样让百度收录网站网站模仿侵权
  • 网站制作主题vi品牌形象设计案例
  • 沧州建设厅官方网站网站建设干货图书
  • 网站分享链接怎么做的免费做mc皮肤网站
  • 做一个网站的全部流程网站制作的收费标准
  • 网站301了不知道在哪做的注册公司流程和费用多少
  • 东莞网站建设用哪种好做网站开发用哪种语言好
  • html个人网站策划书贝壳找房官网 二手房
  • 网站错位网站背景居中怎么做
  • 如何建立起个人网站成都网站维护
  • 班级网站模板素材郑州做网站的公司
  • 作文网app下载内容seo是什么意思
  • 广州做贸易网站推荐几个没封的网址
  • 成都企业建网站南宁网站建设公司招聘
  • 开源php企业网站软件开发流程图软件
  • 网站建站公司一站式服务大数据智能营销
  • 做网站需要做手机版吗重庆公司法人变更流程
  • 全屋整装十大公认品牌加盟西昌seo
  • 泉州做网站工资网站开发前准备
  • 河北省建设厅网站官网无锡企业网站建设费用
  • 哪些网站可以做画赚钱管理系统有哪些