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 泛型
泛型 泛型定义 在一个类型(类,接口,方法)之后,定义一个类型参数. 原生类型:类型后面没有指定具体的类型参数. 好处 使用泛型的好处在于,它在编译的时候进行类型安全检查,并且在运行时所有的转换都是强 ...
随机推荐
- DC-9渗透学习
开靶机,net模式,启动 arp-scan -l命令扫描存活主机 nmap -sS -sV -A -n 192.168.100.22 ┌──(root㉿kali)-[~] └─# nmap -sS - ...
- (C语言)每日代码||2023.12.25||strcpy()函数两个参数中的'\0'
#include <stdio.h> #include <string.h> #define MAX 500 void test() { char arr1[] = { '1' ...
- java的char类型,只有两个字节,为什么可以存储汉字?java中 char详解
我自己出了一道面试题,如下: public static void main(String[] args) { char a = '9'; char b = 9; char c = '我'; Syst ...
- SuperObject 的创建类型重大发现
原来每当到自己创建数组加对象的时候就很头疼,原来是这样搞的,这次是清晰了 向数组里增加对象就用这个了: MySo.AsArray.Add(SO('{"爱好":["编程&q ...
- Hive实战
1.使用hive实现WordCount (1) 创建数据库 create database wordcount; (2) 创建外部表 create external table word_data(l ...
- NC20240 [SCOI2005]互不侵犯KING
题目链接 题目 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案. 国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 输入描述 只有一行 ...
- Python中`yield`关键字详解
Python中`yield`关键字有什么用? Python中yield关键字有什么用? 它能做什么? 例如,我试图理解这段代码1: def _get_child_candidates(self, di ...
- Java Solon v2.7.0 发布
Java Solon 是什么框架? Java "生态级"应用开发框架.从零开始构建,有自己的标准规范与开放生态.(历时七年,具备全球第二级别的生态规模) 相对于 Spring,有什 ...
- Spring Boot图书管理系统项目实战-7.借阅图书
导航: pre: 6.图书管理 next:8.续借图书 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 bookBorrow ...
- python第五章pta习题总结
四.编程部分 1.sorted函数: sorted(iterable, cmp=None, key=None, reverse=False) #iterable:可迭代的对象 #cmp:比较规则 #k ...