day13-Servlet03
Servlet03
11.练习
快捷键-可以快速地在访问的文件件切换
ctrl+alt+向左箭头:回到上次访问的位置
ctrl+alt+向右箭头:回到下一步访问的位置
11.1CatServlet

首先创建项目servlet,配置好Tomcat,添加web应用支持。在web目录下面的WEB-INF目录下创建lib目录,在Tomcat安装包的lib目录中找到servlet-api,并添加到idea的web目录下面的WEB-INF/lib目录,选择引用为库文件

在src目录下创建目录,编写CatServlet类:
package servlet;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class CatServlet implements Servlet {
public int count = 0;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
count++;//每次访问service方法,count累加
System.out.println("该servlet访问次数=" + count);
//获取请求的方式
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
if (method.equals("GET")) {
doGet();
} else if (method.equals("POST")) {
doPost();
}
}
public void doGet() {
System.out.println("CatServlet doGet()...");
}
public void doPost() {
System.out.println("CatServlet doPost()...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
在web.xml文件中进行Servlet配置:
<?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>CatServlet</servlet-name>
<servlet-class>servlet.CatServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CatServlet</servlet-name>
<url-pattern>/cat</url-pattern>
</servlet-mapping>
</web-app>
在WEB-INF目录下编写一个html,用于测试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="http://localhost:8080/servlet/cat" method="get">
name: <input type="text"/><br/><br/>
<input type="submit" value="login"/>
</form>
</body>
</html>
点击启动Tomcat,在浏览器中输入地址:http://localhost:8080/servlet/login.html
点击login按钮,成功跳转到CatServlet中:


后台输出:(如果表单方式改变了,仍然调用的是旧的访问方法,点击保存html,并刷新浏览器页面即可解决)

11.2DogServlet

在11.1的项目框架上进行编程
首先在src目录下创建DogServlet类
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DogServlet extends HttpServlet {
private int getCount = 0;
private int postCount = 0;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
getCount++;
System.out.println("getCount=" + getCount);
System.out.println("DogServlet-访问doGet()");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
postCount++;
System.out.println("postCount=" + postCount);
System.out.println("DogServlet-访问doPost()");
}
}
注意:这里没有重写service方法,因此当浏览器请求DogServlet时,会去父类HttpServlet类中去找调用的service方法,在HttpServlet类中的service方法会根据请求类型如get、post去调用当前运行类型(即DogServlet)的doPost、doGet方法,因此在自己创建的Servlet中不用判断请求方式
在web.xml文件中配置该Servlet:
<servlet>
<servlet-name>DogServlet</servlet-name>
<servlet-class>servlet.DogServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DogServlet</servlet-name>
<url-pattern>/dog</url-pattern>
</servlet-mapping>
修改之前的login.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="http://localhost:8080/servlet/dog" method="post">
name: <input type="text"/><br/><br/>
<input type="submit" value="login"/>
</form>
</body>
</html>
点击redeploy Tomcat,在浏览器输入地址http://localhost:8080/servlet/login.html,点击login按钮,成功跳转到DogServlet


将login.html文件中表单提交方式反复该为post或者get,多次访问,后台输出如下:
(如果表单方式改变了,仍然调用的是旧的访问方法,点击保存html,并刷新浏览器页面即可解决)

11.3PigServlet

在11.1的项目框架上进行编程
在src目录下编写PigServlet
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = {"/pig1", "/pig2"},loadOnStartup = 1)
public class PigServlet extends HttpServlet {
private int getCount = 0;
private int postCount = 0;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
getCount++;
System.out.println("PigServlet-访问doGet()-get访问次数=" + getCount);
System.out.println("客户端地址="+req.getRemoteAddr());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
postCount++;
System.out.println("PigServlet-访问doPost()-post访问次数=" + postCount);
System.out.println("客户端地址="+req.getRemoteAddr());
}
}
修改login.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="http://localhost:8080/servlet/pig1" method="get">
name: <input type="text"/><br/><br/>
<input type="submit" value="login"/>
</form>
</body>
</html>
点击redeploy Tomcat,在浏览器输入地址http://localhost:8080/servlet/login.html,点击login按钮,成功跳转到PigServlet
将login.html文件中表单提交方式反复改为post或者get,多次访问,后台输出如下:
(如果表单方式改变了,仍然调用的是旧的访问方法,点击保存html,并刷新浏览器页面即可解决)

11.4浏览器访问过程


day13-Servlet03的更多相关文章
- Spark Streaming揭秘 Day13 数据安全容错(Driver篇)
Spark Streaming揭秘 Day13 数据安全容错(Driver篇) 书接上回,首先我们要考虑的是在Driver层面,有哪些东西需要维持状态,只有在需要维持状态的情况下才需要容错,总的来说, ...
- ##DAY13——可视化编程之XIB
##DAY13——可视化编程之XIB 1.关联控件 2.关联事件 3.关联手势 4.关联代理 这个时候即使不给控制器用下面方法添加代理,代理方法也是可以使用的,只是没有方法提示: 其他重要地方: #i ...
- Python之路Day13
day13主要内容:JavaScript.DOM.jQuery 武Sir blog:http://www.cnblogs.com/wupeiqi/articles/5369773.html JavaS ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
- Alpha冲刺!Day13 - 小结
Alpha冲刺!Day13 - 小结 各个成员今日完成的任务 今天团队极限编程12小时,从早上九点要求每个人给出一张电脑全屏截图以示开始干活,每两小时汇报进度确认已经做了什么.现在在做什么. 各节点列 ...
- python 全栈开发,Day13(迭代器,生成器)
一.迭代器 python 一切皆对象 能被for循环的对象就是可迭代对象 可迭代对象: str,list,tuple,dict,set,range 迭代器: f1文件句柄 dir打印该对象的所有操作方 ...
- 10.31 正睿停课训练 Day13
目录 2018.10.31 正睿停课训练 Day13 A Poker(期望) B Label(高斯消元) C Coin(二分图染色 博弈) 考试代码 A(打表) B 2018.10.31 正睿停课训练 ...
- day13,day14
day13 迭代器 什么是迭代器? 迭代:是一个重复的过程,每一次重复,都是基于上一次的结果而进行的 器:迭代取值的工具 为何要用迭代器? 迭代器提供了一种通用的不依赖于索引的迭代取值方式 如何用迭代 ...
- day13(反射,BeanUtils包)
反射, 获取字节码文件的方式: 方式一: 对象.getClass(); 方式二: 类名.Class; 方式三: Class.forName(String Class); 通过字节码文件获取对象 定 ...
- Day13 泛型
泛型 泛型定义 在一个类型(类,接口,方法)之后,定义一个类型参数. 原生类型:类型后面没有指定具体的类型参数. 好处 使用泛型的好处在于,它在编译的时候进行类型安全检查,并且在运行时所有的转换都是强 ...
随机推荐
- Docker从认识到实践再到底层原理(四-1)|Docker镜像仓库|超详细详解
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 【图论】【Matlab】最小生成树之Kruskal算法【贪心思想超详细详解Kruskal算法并应用】
最小生成树之Kruskal算法 注意:内容学习来自:b站CleverFrank数模算法精讲 导航 前言 实际问题引入 Kruskal算法 整体代码展示 尾声 前言 博主今天给大家带来的是最小生成树中两 ...
- 记录一则ADG备库报错ORA-29771的案例
有客户找到我这边咨询,说他们的一套核心ADG库在业务高峰期报错,因为业务做了读写分离,其备库也实际承担读业务,所以备库故障也会对业务产生影响. 这里也要提醒大家,做读写分离,如果读库出现故障的情况,要 ...
- CF1886
A 分类讨论. B 二分. C 题意:给定一个字符串 \(s\).记 \(s_i\) 为将 \(s\) 删去 \(i\) 个字符,使得剩余字符串字典序最小得到的字符串.令 \(S=s_0+s_1+\d ...
- Power BI 9 DAY
图形决策树
- RocketMQ—RocketMQ消费重试和死信消息
RocketMQ-RocketMQ消费重试和死信消息 消费重试 生产者重试 设置重试的代码如下 // 失败的情况重发3次 producer.setRetryTimesWhenSendFailed(3) ...
- JS leetcode 删除排序数组中的重复项 题解分析
壹 ❀ 引 一日一题,今天的题目来自于leetcode26. 删除排序数组中的重复项,其实在之前我们已经做了一道类似的题目,可参考JS leetcode 移除元素 题解分析,关于本题描述如下: 给定一 ...
- 【Android】MediaCodec详解
1 前言 MediaCodec 主要用于视频解码和编码操作,可以实现视频倍速播放.全关键帧转换.视频倒放等功能. MediaCodec 的工作原理图如下: MediaCodec 的主要接口 ...
- Spring rce CVE-2022-22965
原理大致是这样:spring框架在传参的时候会与对应实体类自动参数绑定,通过"."还可以访问对应实体类的引用类型变量.使用getClass方法,通过反射机制最终获取tomcat的日 ...
- 4.1k Star!全面的C#/.NET/.NET Core学习、工作、面试指南
C#/.NET/.NET Core 学习.工作.面试指南 让现在的自己不再迷茫 . GitHub 开源地址:https://github.com/YSGStudyHards/DotNetGuide D ...