首页 > 编程语言 >Java Servlet学习

Java Servlet学习

时间:2024-03-26 22:31:59浏览次数:16  
标签:web Java servlet public 学习 webapp Servlet 目录

一、了解Servlet

1.实现一个基本的web应用(这个web应用中没有java小程序)

  • 找到CATALINA_HOME\webapps目录

    • 因为所有的webapp要放在这个目录下(tomcat服务器的要求)

  • webapps目录下的每一个子目录就是一个web服务

  • web服务中的页面的相对路径

    • 页面中超链接中ip地址和端口号可以省略

2.BS结构系统的角色和协议

在B/S结构的系统,存在哪些角色

  • 浏览器软件开发商

  • WEB Server开发团队

  • WEB 应用开发团队

  • 数据库开发团队

WEB Server 和WEB 应用之间有一套规范,Servlet规范用于解除web server 与web 应用之间的耦合度

浏览器与web server

  • 也需要传输协议,即超文本传输协议

数据与web 应用之间也需要一套传输协议JDBC

3.Servlet规范是一个什么规范?

  • 遵循servlet规范的webapp、这个webapp就可以在不同的web服务器中运行,(因为webapp是遵循servlet规范的)

  • servlet规范了包括什么?

    • 规范了哪些接口

    • 规范了那些类

    • 规范了一个web应用中应该有哪些配置文件

    • 规范一个配置文件的名字

    • 规范了配置文件存放的路径

    • 规范了一个web应用中配置文件的内容

    • 规范了一个合法有效的webapp的目录结构是怎么样的

4.开发一个带有servlet的webapp(重点)

  • 开发步骤是怎么样的呢?

    • 第一步:在webapps目录下,新建一个子目录,作为一个webapp

    • 第二步:在webapp目录下新建一个目录 WEB-INF 必须一模一样,必须大写,

    • 第三步:在WEB-INF目录下新建一个目录,classes,这也是servlet规范中规范的,这个目录下一定存放的是编译好的class文件

    • 第四步:在WEB-INF目录下新建一个lib目录:这个目录不是必须的,但是如果引入了第三方jar包,这个jar必须放在这个目录下

    • 第五步:在WEB-INF目录下创建文件 web.xml 配置文件,这个文件是必须的,一个合法的webapp必须有web.xml配置文件

    • 第六步:编写一个java程序,这个小程序也不能随意开发,这个小程序必须实现servlet接口

      • 这个servlet接口不在JDK中

      • Servlet接口是Oracle提供的

      • Servlet接口时javaEE的规范中的医院

      • Tomcat服务器实现了servlet规范,所以Tomcat服务器也需要使用Servlet-API.jar

      • 使用Servlet-API.jar中的Servlet.class

    • 第七步:编译实现Servlet接口的java小程序,必须将Selvlet-API.jar包安装到CLASS_PATH环境变量下

    • 第八步:将编译好的class文件放到webapp中的classes路径下

    • 第九步:在web.xml文件中配置java小程序与

      <!--servlet描述信息 -->
      <!--每一个servlet小程序都有一个对应的servletMapping映射-->
      <servelt>
          <servlet-name>
      一个servlet的唯一名字,识别名称 </servlet-name>
          <!--java小程序的全限定类名-->
          <servlet-calss>
         </serlvet-classs>
      </servlet>
      ​
      <!--servlet映射信息-->
      <servlet-mapping>
          <!--这个也是随便的,不过要与上面的servlet对应-->
          <servlet-name>一个servlet的唯一名字,识别名称   </servlet-name>
          
          <!--这里需要一个路径,这个路径要求是必须以 / 开始,当前这个路径可以随便写-->
          <url-pattern>/aa/aa/bb
          </url-pattern>
      </servlet-mapping>
    • 一个合法的webapp目录结构

      webapp root
          |----WE-INF
              |----classes(字节码)
              |----lib(第三方jar)
              |----web.xml(注册servlet)
          |----html
          |----css
          |----javascript
          |----imgs

5.关于JavaEE版本

  1. javaEE目前最高版本时JavaEE8

  2. JavaEE被Oracle捐献给Apache了

  3. Apache将JavaEE换名了,较做JakartaEE

  4. javaEE升级之后javaEE9不再是javaee9,而是叫做jakartaee9

  5. 在tomcat9以及tomcat9之前的版本

6.关于Servlet接口中的5个方法

  1. public class ServletTest implements Servlet{
        //第一个方法
        public void init(ServletConfig config){
            
        }
        //第二个方法
        public void service(ServletRequest request,ServletResponse response) throws ServletException,IOException{
            //怎么将一个信息直接输出到浏览器上?
            
        }
        //第三个方法
        public void destroy(){
            
        }
        //第四个方法
        public Strig getServletInfo(){
            return "";
        }
        //第五个方法
        public ServletConfig getServletConfig(){
            return null;
        }
    }
    ​
  2. 浏览器中路径为IP地址+端口号+项目名+url-pattern

  3. 浏览器上编写路径太复杂,因此可以使用HTML页面(放在WEB-INF目录外)超链接方式,<a href ="路径为:IP地址端口号(可以省略)+项目名+路径">

7.解决Tomcat服务器在Dos命令窗口中的乱码问题(控制台乱码)

  1. 在tomcat安装文件中,找到config目录下的lognging.properties日志配置文件,找到java.util.logging.ConsoleHandler.encoding = GBK(因为Win系统的DOS命令窗口的编码方式是GBK方式)

二、Servlet接口中方法学习

1.认识servlet接口中的五个方法

public class ServletTest implements Servlet{
    //第二个方法
    public void service(ServletRequest request,ServletResponse response) throws ServletException,IOException{
        //怎么将一个信息直接输出到浏览器上?
        //需要使用ServletResponse接口:response
        //response表示响应,从服务器向浏览器发送数据叫做响应。
        //通过响应的getWriter方法获取PrintWriter对象
    
        //设置响应的文件类型以及编码格式
        response.setContextType("text/html;charser=utf-8");
        PrintWriter out = servletResponse.getWriter();
        out.print("这里数据输出到浏览器,在浏览器中显示")
        //out.flusg;
        //out.close;
        //这个流不需要关闭,因为tomcat会将这个io流刷新与关闭
        
        //浏览器是可以识别html代码的。
        //设置响应内容的类型时,不要在获取流之后设置,response.setContextType("text/html");
    
    
    }
}
​

2.在servlet中编写JDBC程序来连接数据库

public class ServletTest implements Servlet{
    //第二个方法
    public void service(ServletRequest request,ServletResponse response) throws ServletException,IOException{     
 //注册驱动
 //创建连接
 //获取预编译对象
 //执行Sql
 //处理结果集
 //释放资源
        response.setContextType("text/html;charser=utf-8");
        PrintWriter out = servletResponse.getWriter();
    }
}

 

标签:web,Java,servlet,public,学习,webapp,Servlet,目录
From: https://blog.csdn.net/tonight_730/article/details/137059610

相关文章

  • javascript基础代码练习
    一、输入新增病例数,累计确诊病例数,14天内聚集性疫情发生天数。新增或者累计确诊病例为0则该地区为低风险地区。新增大于0且累计确诊<50或者累计大于50且14天内聚集性疫情发生天数为0的地区为中风险地区。其他情况为高风险地区。<!DOCTYPEhtml><html><head>  <metachar......
  • java定义和使用类和对象
    1.下面是一个教师类Teacher,用于学校某个系部的管理。系部在管理教师时,所关心的信息主要有教师编号、姓名、性别、年龄、家庭住址、电话号码等,于是抽取这些属性来描述"教师"这个实体。考虑到教师年龄、家庭住址、电话号码等不宜对无关人员公开,于是将这些数据设为私有的成员变量(即......
  • Java数组(下)
    Java数组(下)多维数组多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组inta[][]=newint[2][5];//可以看成是一个两行五列的数组packagearray;publicclassArrayDemo05{publicstaticvoidmain(String[]args......
  • Linux学习之Linux常用操作补充
    Linux常用操作补充yum基本使用安装:yuminstall包名yuminstalltelnet卸载:需要借助rpm进行卸载换源参考https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b115Ci1Y6备份原有的源配置文件mv/etc/yum.repos.d/CentOS-Base.repo......
  • HTML学习笔记5——功能性链接(打电话发邮箱)
    可以跳转至发邮箱打电话等的链接,在vscode中写完代码后右击选择OpenwithliveServer用服务器打开。这篇文章主要介绍发邮箱和用手机打电话。<--都写在body中--><--邮箱格式--><ahref="mailto:[email protected]">邮箱</a><--打电话格式--><ahref="tel:176xxxxxxxx......
  • 13. 一起学习机器学习 PCA
    LineardimensionalityreductionThepurposeofthisnotebookistounderstandandimplementtwolineardimensionalityreductionmethods:Principlecomponentanalysis(PCA)Non-NegativeMatrixFactorization(NMF)Themainideaofthesemethodsistoappro......
  • 10. 一起学习机器学习 -- Convolutional Neural Networks (CNNs)
    ConvolutionalNeuralNetworks(CNNs)ThepurposeofthisnotebookistopracticeimplementingandtrainingCNNs.Westartwitha1-dimensionalconvolutionallayerinNumPy.WewillthenusePyTorch,anoptimisedmachinelearningframeworkforPythonbas......
  • Java(匿名对象和命名对象)——进一步了解对象
    1.前面已知,想要抽象出一个对象,首先要写好它的模板——类但是存在一个问题,我们想创建一个对象,要用构造方法去初始化这个对象。但是如果我们只想在某个时候只使用这个对象一次,之后就不要用了,那是不是这个对象就会占我们的内存,就像我们借走别人的笔(这个对象),之后要还给别人。所以......
  • Blazor学习记录六_模版化组件_渲染模式_CSS隔离和代码隔离
    17.模版化组件在组件中放置一个可渲染的代码片段供外部调用者来传入要渲染的内容及渲染样式,这样的组件就叫做模版化的组件。一般是一个支持泛型的组件,目标为消费者封装重复使用的通用性良好的UI组件。比如一个用来给用户呈现表格数据的表格组件。示例组件GenaricTable.razor代......
  • 深度学习批次(batch)、迭代(iteration)、周期(epoch)、前向传播(forward propagation)
    虽然现在应该是已经熟练掌握这些基础概念的时候,但是我是鱼的记忆,上一秒的事情,下一秒就忘了,除非是重要的人的重要的事情,呜呜呜呜,我这个破脑子.还是写一下吧,直接GPT出来的(人类之光,欢呼~).以前写过一次,贴一下链接:深度学习模型训练的过程理解(训练集、验证集、测试集、batch、itera......