Servlet的使用(21/9/8)

文章目录

  • Servlet的使用(21/9/8)
      • 前言:继昨天了解了Servlet的含义及作用,今天来学习其(部分)使用过程
    • 一、实现Servlet接口
      • java代码步骤:
        • 重写service方法
        • 重写init方法
        • 重写getServletConfig方法
        • 重写getServletConfig方法
        • 重写destroy方法
      • 小结:
      • 常见问题:
        • ①找不到包
        • ②文字乱码
    • 二、继承GenericServlet
    • 三、继承HttpServlet(推荐)
      • 思考::HttpServlet中既有service方法也存在doGet or doPost方法,如果这三者并存则执行哪个方法?
      • 细心解答:

前言:继昨天了解了Servlet的含义及作用,今天来学习其(部分)使用过程

一、实现Servlet接口

java代码步骤:
  1. 重写service方法
  2. 重写init方法
  3. 重写getServletConfig方法
  4. 重写getServletConfig方法
  5. 重写destroy方法
package com.shopping;
//导入相应的包
import javax.servlet.*;
import java.io.*;
public class HelloServlet implements Servlet{//service服务处理方法public void service(ServletRequest req,ServletResponse res)throws ServletException,IOException{//输出内容}//初始化方法public void init(ServletConfig config)throws ServletException{//输出内容}//获取servlet信息方法public String getServletInfo(){//输出内容return null;}//获取servlet配置方法public ServletConfig getServletConfig(){//输出内容return null;}//销毁方法public void destroy(){//输出内容}
}

将该java文件使用javac命令编译成xxx.class字节码文件后,找到该项目的的web.xml配置文件加入

注意是要放到web-app标签的中间

<servlet><servlet-name>helloServlet</servlet-name><servlet-class>com.shopping.HelloServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/helloServlet</url-pattern>
</servlet-mapping>

同时,导入相关Servlet的jar包(位置:tomcat的安装目录/lib)

%JAVA_HOME%\jre\lib\ext  (servlet-api.jar | jsp-api.jar | el-api.jar)这三个包

最后在浏览器的url上输入

http://localhost:8080/shopping/helloServlet

结果,能够在tomcat的服务启动页面最下方看到相应的输出


小结:

请问大家有没有发现一个问题,这个实现类并没有进行实例化就能够进行方法的调用,这是因为在tomcat容器中帮你进行了h操作,利用反射技术将该类进行实例化就好比等效于如下实例:

HelloServlet helloServlet = new HelloServlet();
常见问题:
①找不到包

​ 解决:将所需的包导入即可(使用idea工具亦可解决,下期出)

②文字乱码

​ 解决:将文件的默认编码改为ANSI即可

二、继承GenericServlet

操作和上面没什么太大的区别,就加速通过了!

(1)  在classes对应包目录中创建一个继承GenericServlet的servlet类
package com.shopping;
import javax.servlet.*;
public class ExtendGenriceServlet extends GenericServlet{(2)    重写GenericServlet中相应的方法,并编写相应代码//服务处理方法public void service(ServletRequest res, ServletResponse resp){System.out.println("invoke ExtendGenriceServlet service method");}
}(3)    在web.xml配置servlet
<servlet><servlet-name>extendGenriceServlet</servlet-name><servlet-class>com.shopping.ExtendGenriceServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>extendGenriceServlet</servlet-name><url-pattern>/extendGenriceServlet</url-pattern>
</servlet-mapping>

三、继承HttpServlet(推荐)

(1)  在classes对应包目录中创建一个类继承HttpServlet的servlet类
package com.shopping;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ExtendsHttpServlet extends HttpServlet{(2) 重写HttpServlet中相应的方法,并编写相应代码protected void doGet(HttpServletRequest res , HttpServletResponse resp)throws ServletException,IOException{System.out.println("invoke doGet method");}protected void doPost(HttpServletRequest res , HttpServletResponse resp)throws ServletException,IOException{System.out.println("invoke doPost method");}protected void service(ServletRequest res , ServletResponse resp)throws ServletException,IOException{System.out.println("invoke service method");}
}
(3) 在web.xml文件中配置servlet
<servlet><servlet-name>extendsHttpServlet</servlet-name><servlet-class>com.shopping.ExtendsHttpServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>extendsHttpServlet</servlet-name><url-pattern>/extendsHttpServlet</url-pattern>
</servlet-mapping>

思考::HttpServlet中既有service方法也存在doGet or doPost方法,如果这三者并存则执行哪个方法?

public class ExtendsHttpServlet extends  HttpServlet{       protected  void doGet(HttpServletRequest res , HttpServletResponse resp)throws  ServletException,IOException{     System.out.println("invoke  doGet method");       }       protected  void doPost(HttpServletRequest res , HttpServletResponse resp)throws  ServletException,IOException{           System.out.println("invoke  doPost method");       }       public  void service(ServletRequest res , ServletResponse resp)throws  ServletException,IOException{           System.out.println("invoke  service method");       }
}

答案:以上三个处理请求的方法最终只执行service

那么问题又来了,这是为什么呢?

细心解答:

这就可以理解为doGet和doPost都是由service方法而衍生而来的,
就像在一个家庭中,外人一般都是先叫这个家中最牛逼,
最有能力的出面解决问题。(我自认为很形象了QAQ,我尽力了)

Servlet的使用(2198)相关推荐

  1. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  2. JavaEE学习笔记之Servlet

    同一用户的不同页面的共享数据 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 ###session技术: 当用户打开浏览器,访问某个网 ...

  3. 【JavaWeb】servlet与http请求协议

    Servlet: 概念: server applet (服务端小程序)运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则. 将我我们自定义一个 ...

  4. 使用最新版(2020)IntelliJ IDEA 创建Servlet项目

    一:选择左上端的File,创建Project,选择创建Web Application 项目: 注:不勾选Create web.xml 二:设置项目名称:helloworld,并创建一个Servlet( ...

  5. 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~

    目录 1.什么是JSP 2.JSP原理 3.JSP基础语法 jsp表达式 jsp脚本片段 jsp声明 jsp注释 4.JSP指令 5.JSP行为 6.9大内置对象 7.EL表达式 格式 变量 [ ]与 ...

  6. 来谈谈Servlet~~

    目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...

  7. 使用Servlet完成单表的CRUD

    实现步骤 第一步:准备一张数据库表.(sql脚本) 第二步:准备一套HTML页面(项目原型)[前端开发工具使用HBuilder] 第三步:分析我们这个系统包括哪些功能 第四步:在IDEA当中搭建开发环 ...

  8. 适配器(GenericServlet)改造Servlet

    JavaWeb系列教程 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造Servle ...

  9. 使用IDEA开发Servlet程序

    JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...

最新文章

  1. element 0 of tensors does not require grad and does not have a grad_fn
  2. host文件修改后无法保存的问题
  3. JAXB –表示空集合和空集合
  4. 前端学习(2372):uni-ui库
  5. Android 柱状图
  6. 怎样洗头使头发变黑变多
  7. Java继承_深入理解Java继承、封装、多态的实现原理
  8. 厉害了!这款百度炼丹神器绝了!
  9. 安卓APK反编译详解(多图)
  10. 最简单24点算法,可任意实现n数n点,一看就明!
  11. android自动烧写工具,MiniTools(Android内核烧录软件) v1.1 官方安装免费版
  12. 华为设备配置SEP多环
  13. TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的FIR滤波处理
  14. 一些程序中常出现的英文符号的读法
  15. 计算机试题九,2017年职称计算机考试Excel测验试题(九)
  16. 基站信号强度和位置变化详解(可获得其他系统信息)
  17. 百度 oppo 滴滴出行 面试问题总结 阿里
  18. hadoop常用的命令大全
  19. 超详细的RS232/RS485电路设计
  20. vue 移动端 div背景图片 pc端显示 移动端不显示

热门文章

  1. python中 什么意思_请问python中%代表什么意思?
  2. python关于类的通俗描述?
  3. (MACN小米AI 轻量化SISR)A Matrix-in-matrix Neural Network for Image Super Resolution
  4. Python解析百度地图各省市经纬度(二)
  5. 机器学习-无监督学习-聚类:聚类方法(一)--- k-Means(k-均值)算法,k-Means++算法【使用最大期望值算法(EM算法)来求解】
  6. 企业办理CMMI3级认证,需要做哪些工作?
  7. html需要编译执行吗,Javascript代码需要编译以后才能执行。
  8. uni-app的flex盒模型与布局进阶写法(高手勿进)
  9. Paperreading之五  Stacked Hourglass Networks(SHN)和源码阅读(PyTorch版本)
  10. 修改密码问题_修改密码