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的更多相关文章

  1. Spark Streaming揭秘 Day13 数据安全容错(Driver篇)

    Spark Streaming揭秘 Day13 数据安全容错(Driver篇) 书接上回,首先我们要考虑的是在Driver层面,有哪些东西需要维持状态,只有在需要维持状态的情况下才需要容错,总的来说, ...

  2. ##DAY13——可视化编程之XIB

    ##DAY13——可视化编程之XIB 1.关联控件 2.关联事件 3.关联手势 4.关联代理 这个时候即使不给控制器用下面方法添加代理,代理方法也是可以使用的,只是没有方法提示: 其他重要地方: #i ...

  3. Python之路Day13

    day13主要内容:JavaScript.DOM.jQuery 武Sir blog:http://www.cnblogs.com/wupeiqi/articles/5369773.html JavaS ...

  4. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

  5. Alpha冲刺!Day13 - 小结

    Alpha冲刺!Day13 - 小结 各个成员今日完成的任务 今天团队极限编程12小时,从早上九点要求每个人给出一张电脑全屏截图以示开始干活,每两小时汇报进度确认已经做了什么.现在在做什么. 各节点列 ...

  6. python 全栈开发,Day13(迭代器,生成器)

    一.迭代器 python 一切皆对象 能被for循环的对象就是可迭代对象 可迭代对象: str,list,tuple,dict,set,range 迭代器: f1文件句柄 dir打印该对象的所有操作方 ...

  7. 10.31 正睿停课训练 Day13

    目录 2018.10.31 正睿停课训练 Day13 A Poker(期望) B Label(高斯消元) C Coin(二分图染色 博弈) 考试代码 A(打表) B 2018.10.31 正睿停课训练 ...

  8. day13,day14

    day13 迭代器 什么是迭代器? 迭代:是一个重复的过程,每一次重复,都是基于上一次的结果而进行的 器:迭代取值的工具 为何要用迭代器? 迭代器提供了一种通用的不依赖于索引的迭代取值方式 如何用迭代 ...

  9. day13(反射,BeanUtils包)

    反射, 获取字节码文件的方式: 方式一: 对象.getClass(); 方式二: 类名.Class; 方式三:   Class.forName(String Class); 通过字节码文件获取对象 定 ...

  10. Day13 泛型

    泛型 泛型定义 在一个类型(类,接口,方法)之后,定义一个类型参数. 原生类型:类型后面没有指定具体的类型参数. 好处 使用泛型的好处在于,它在编译的时候进行类型安全检查,并且在运行时所有的转换都是强 ...

随机推荐

  1. Proxmox 7.4 使用vgpu_unlock,为GTX1060开启vGPU支持

    本文在 2021年发布的博客<Proxmox 5.4使用vgpu_unlock,为GTX1060开启vGPU支持>,介绍了 Proxmox VE 5.4 上部署vGPU unlock 的操 ...

  2. 树莓派4B改造成云桌面客户端,连接DoraCloud免费版

    Raspberry Pi(树莓派) 是为学习计算机编程教育而设计的只有信用卡大小的微型电脑,自问世以来受众多计算机发烧友和创客的追捧,曾经一"派"难求. DoraCloud是一款多 ...

  3. 零基础入门学习Java之多线程

    多线程 话不多说,看代码 1.什么是多线程 众所周知CPU单线程的东西,也就是说在同一时间内程序只能去做一件事情,但很多时候比如说多人买票.龟兔赛跑.游戏开发等都需要在同一时间内完成多个东西,因此就有 ...

  4. STM8 bootloader 升级方案程序设计(一)

    1.前言 上一篇单片机 IAP 功能基础开发篇之APP升级(一)讲到了单片机 IAP 功能给 APP 程序升级的设计思路,这篇介绍的是具体实现方式. 这篇介绍关于 STM8 系列实现 bootload ...

  5. 使用了未经检查或不安全的操作。 有关详细信息, 请使用 -Xlint:unchecked 重新编译

  6. Java并发编程-CompletableFuture(下)

    大家好,我是小高先生,书接上文,我们继续来学习CompletableFuture.上文我们讲了基础装Future是如何升级为神装CompletableFuture以及如何购买CompletableFu ...

  7. NC19246 数据结构

    题目链接 题目 题目描述 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的元素的平方和 3 l r ...

  8. Oracle数据库报ORA-01078和LRM-00109错误解决方法

    创建实例后,进入sqlplus启动报错:     sqlplus / as sysdba;     SQL*Plus: Release 11.1.0.6.0 - Production on Wed A ...

  9. form表单如何实现ajax提交

    最近在开发一个游戏网关的后台管理系统,总结了下中间碰到的一些问题. 之一就是:form表单如何实现ajax提交? 问题:在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转, ...

  10. java面向对象之封装-继承-抽象-多态-组合五种概念及用法一网打尽

    说明 曾经在学习java面向对象时,你是否会为面向对象的封装-继承-抽象-多态-组合等各种概念搞得稀里糊涂,乃至反复阅读,背诵其相关概念,结果一段时间过后又还给了时间... 这种经历简直令人发指,让人 ...