首页 > 其他分享 >day13-Servlet03

day13-Servlet03

时间:2022-11-08 22:01:03浏览次数:44  
标签:day13 import println Servlet03 login servlet public out

Servlet03

11.练习

快捷键-可以快速地在访问的文件件切换

ctrl+alt+向左箭头:回到上次访问的位置

ctrl+alt+向右箭头:回到下一步访问的位置

11.1CatServlet

image-20221108190559392

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

image-20221108192728344

在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中:

image-20221108194726469 image-20221108194829360

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

image-20221108194942684

11.2DogServlet

image-20221108213658244

在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

image-20221108201510215 image-20221108201533054

将login.html文件中表单提交方式反复该为post或者get,多次访问,后台输出如下:

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

image-20221108202231558

11.3PigServlet

image-20221108214752042

在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,并刷新浏览器页面即可解决)

image-20221108204256119

11.4浏览器访问过程

image-20221108191355809 image-20221108210447036

标签:day13,import,println,Servlet03,login,servlet,public,out
From: https://www.cnblogs.com/liyuelian/p/16871376.html

相关文章

  • day13.0
    finalizeprotected修饰的JVM的垃圾回收器调用执行时机:当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法finalize()方法实际上是一个时机,垃......
  • day13-(事务&mvc&反射补充)
    回顾:jsp:java服务器页面jsp的脚本jsp的注释html注释java注释jsp注释<%----%>jsp的指令page:声明页面一些属性重要的属性:im......
  • day13 cookie
    关于对应的计算机的一些基础课程数据结构(leetcode)逻辑结构存储结构(数组,字符串,栈,队列,图,hash,树、链表...)算法(递归算法(BFS(广度优先查找),DFS(深度优先查找))、动态......
  • day13 I/O流——字节输入输出流、字符输入输出流 & File常用类 & (字节)复制大文件
    day13I/O流定义:数据在两设备传输称为流,流是一组有顺序的,有起点和终点的字节集合I是input的缩写,表示输入流O是output缩写,表示输出流字节流(视频等)输入InputStream......
  • day13cookie
    Cookie概述:为了解决http无状态的问题(通过在cookie里面存储sessionID的方式来解决),cookie是存放在浏览器上的Cookie的特性存储在浏览器上存储大小一般是4kb左右会随请......
  • 《剑指offer》day13
    调整数组顺序使奇数位于偶数前面题目描述思路双指针代码实现双指针classSolution{publicstaticvoidmain(String[]args){int[]nums={1,2,3,4......
  • day13装饰器以及递归函数
    目录今日内容概要今日内容详细多层语法糖有参装饰器装饰器模板null装饰器修复技术递归函数作业今日内容概要多层语法糖问题有参装饰器装饰器修复技术递归函数今......
  • 代码随想录day13 ● 150. 逆波兰表达式求值 ● 239. 滑动窗口最大值 ● 347.前 K
    150.逆波兰表达式求值解题步骤:第一步:创建一个栈;第二步:遍历整个数组;第三步:判断遍历到的元素是运算符还是数字;数字:直接压入栈中运算符:将栈顶两个元素做相应运......
  • day13:leetcode:150,239,347
    leetcode150.逆波兰表达式求值本题的思路和之前的括号配对,两数相消的思想一样,利用栈先进后出的特性,三个字符相消到遍历到的是数字时,直接push,当遇到运算符,直接pop出两个......
  • Day13
    内部类*/publicclassOuter{ /*privateintid=10;  publicvoidout(){    System.out.println("这是外部类方法");  } publicclassInner{......