Servlet的使用(2198)
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代码步骤:
重写service方法
重写init方法
重写getServletConfig方法
重写getServletConfig方法
重写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)相关推荐
- Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常
我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...
- JavaEE学习笔记之Servlet
同一用户的不同页面的共享数据 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 ###session技术: 当用户打开浏览器,访问某个网 ...
- 【JavaWeb】servlet与http请求协议
Servlet: 概念: server applet (服务端小程序)运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则. 将我我们自定义一个 ...
- 使用最新版(2020)IntelliJ IDEA 创建Servlet项目
一:选择左上端的File,创建Project,选择创建Web Application 项目: 注:不勾选Create web.xml 二:设置项目名称:helloworld,并创建一个Servlet( ...
- 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~
目录 1.什么是JSP 2.JSP原理 3.JSP基础语法 jsp表达式 jsp脚本片段 jsp声明 jsp注释 4.JSP指令 5.JSP行为 6.9大内置对象 7.EL表达式 格式 变量 [ ]与 ...
- 来谈谈Servlet~~
目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...
- 使用Servlet完成单表的CRUD
实现步骤 第一步:准备一张数据库表.(sql脚本) 第二步:准备一套HTML页面(项目原型)[前端开发工具使用HBuilder] 第三步:分析我们这个系统包括哪些功能 第四步:在IDEA当中搭建开发环 ...
- 适配器(GenericServlet)改造Servlet
JavaWeb系列教程 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造Servle ...
- 使用IDEA开发Servlet程序
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
最新文章
- element 0 of tensors does not require grad and does not have a grad_fn
- host文件修改后无法保存的问题
- JAXB –表示空集合和空集合
- 前端学习(2372):uni-ui库
- Android 柱状图
- 怎样洗头使头发变黑变多
- Java继承_深入理解Java继承、封装、多态的实现原理
- 厉害了!这款百度炼丹神器绝了!
- 安卓APK反编译详解(多图)
- 最简单24点算法,可任意实现n数n点,一看就明!
- android自动烧写工具,MiniTools(Android内核烧录软件) v1.1 官方安装免费版
- 华为设备配置SEP多环
- TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的FIR滤波处理
- 一些程序中常出现的英文符号的读法
- 计算机试题九,2017年职称计算机考试Excel测验试题(九)
- 基站信号强度和位置变化详解(可获得其他系统信息)
- 百度 oppo 滴滴出行 面试问题总结 阿里
- hadoop常用的命令大全
- 超详细的RS232/RS485电路设计
- vue 移动端 div背景图片 pc端显示 移动端不显示
热门文章
- python中 什么意思_请问python中%代表什么意思?
- python关于类的通俗描述?
- (MACN小米AI 轻量化SISR)A Matrix-in-matrix Neural Network for Image Super Resolution
- Python解析百度地图各省市经纬度(二)
- 机器学习-无监督学习-聚类:聚类方法(一)--- k-Means(k-均值)算法,k-Means++算法【使用最大期望值算法(EM算法)来求解】
- 企业办理CMMI3级认证,需要做哪些工作?
- html需要编译执行吗,Javascript代码需要编译以后才能执行。
- uni-app的flex盒模型与布局进阶写法(高手勿进)
- Paperreading之五 Stacked Hourglass Networks(SHN)和源码阅读(PyTorch版本)
- 修改密码问题_修改密码