java-servlet

文章目录

      • 一、概念
      • 二、Idea搭建javaWeb项目
      • 三、Servlet的生命周期
      • 四、请求重定向
      • 五、请求转发
      • 六、jsp基本使用
      • 七、JSTL标签库
      • 八、Servlet 过滤器

一、概念

  • 定义
    • 运行在服务端的Java应用程序。
  • 作用
    • 处理客户端发送的请求及响应处理的结果。

二、Idea搭建javaWeb项目

  • javaWeb项目
  • 新建一个servlet类
            /** Copyright (C) Mr.Fu Corp.* All Right Reserved.*/package com.example.comjavaweb;import jakarta.servlet.Servlet;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;/*** @author FuShr.2023--5-23* @verdion V1.0*/public class DemoServlet extends HttpServlet {public DemoServlet(){System.out.println("DemoServlet类!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("客户端发起了Post请求!");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("客户端发起了Get请求!");}} 
    
  • 在web.xml文件中创建映射
            <?xml version="1.0" encoding="UTF-8"?><web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"version="5.0"><!--配置Servlet类--><servlet><servlet-name>DemoServlet</servlet-name><servlet-class>com.example.comjavaweb.DemoServlet</servlet-class></servlet><!--配置Servlet类映射--><servlet-mapping><servlet-name>DemoServlet</servlet-name><url-pattern>/demo</url-pattern></servlet-mapping></web-app>
    
  • html增加代码
        <form action="demo" method = "get"><input type="submit" value="get请求"></form> 
    
  • 使用注解的方式映射
     @WebServlet(name = "helloServlet", urlPatterns = "/hello-servlet")# name:servlet 名称# urlPatterns:servlet 路径
    

三、Servlet的生命周期

  • 生命周期
    • 实例化–初始化[init]–调用分发请求service-- destroy[销毁]

四、请求重定向

  • 概念
    • 地址栏请求,超链接;重定向之后地址栏内容发生变化。
      • 代码如下
       resp.sendRedirect("index.jsp?txt_name="+txt_name+"&txt_pwd="+txt_pwd);
      

五、请求转发

  • 从请求到结束只能发生一次请求,请求过程中地址栏不发生变化。
    • 代码如下
      //设置参数req.setAttribute("txt_name",txt_name);req.setAttribute("txt_pwd",txt_pwd); //请求转发req.getRequestDispatcher("index.jsp").forward(req,resp);
      

六、jsp基本使用

  • JSP实质就一个servlet文件。(jsp->转译java文件)->在编译成.class文件->执行.class文件.
  • jsp的基本结构
    • 代码如下
          <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 页面指令<!DOCTYPE html><html><head><title>HOME</title></head><body></body></html><%%> --java的小脚本,在这里就和在方法里面编写的代码一样<%! %>声明,能够在这个里面定义方法<%= %> 表达式
      
      • 使用前提
        • 必须有依赖jsp-api.jar
      • 示例代码
          <%@ page import="java.util.Date" %><%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%! public String  getTime(){return new Date().toLocaleString();} %><!DOCTYPE html><html><head><title>HOME</title></head><body><!--显示登录的账号和密码--><h1>HOME 页面</h1><p>用户名:<%= request.getAttribute("txt_name")%></p><p>密码:<%= request.getAttribute("txt_pwd")%></p></body></html>
        

七、JSTL标签库

  • 引入标签库
    • 下载标签库地址
      • mvnrespository.com
  • 在jsp页面引入标签库
    • pom.XML
        <dependency><groupId>org.glassfish.web</groupId><artifactId>jakarta.servlet.jsp.jstl</artifactId><version>2.0.0</version></dependency><dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-spec</artifactId><version>1.2.5</version></dependency><dependency><groupId>org.apache.taglibs</groupId><artifactId>taglibs-standard-impl</artifactId><version>1.2.5</version></dependency>
      • 注意:对应tomcat的版本为:10.1.16 jdk版本:JDK 21
  • 在jsp页面使用标签库
    • 示例代码
          //引入jstl标签库<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><table><c:forEach begin="1" end="10" step="1" var="i" ><tr><td>${i}</td></tr></c:forEach></table> </html>
      

八、Servlet 过滤器

  • 基本语法
      # 继承Filter 接口,并实现函数package Filter;import jakarta.servlet.*;import jakarta.servlet.annotation.WebFilter; import java.io.IOException;@WebFilter(filterName = "HelloServletFilter",urlPatterns = "/*")public class HelloServletFilter implements Filter {/*** 过滤器初始化* @param filterConfig* @throws ServletException*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {Filter.super.init(filterConfig);}/***  servlet 请求过滤* @param servletRequest* @param servletResponse* @param filterChain* @throws IOException* @throws ServletException*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//将servletRequest,servletResponse 对象强转成为Http的请求和响应对象HttpServletRequest httpServletRequest =  (HttpServletRequest)servletRequest;HttpServletResponse httpServletResponse = (HttpServletResponse)servletResponse;//获取请求路径和ip地址、主机名 端口System.out.println(httpServletRequest.getRemoteAddr());System.out.println(httpServletRequest.getRequestURI());System.out.println(httpServletRequest.getRemotePort());System.out.println(httpServletRequest.getRemoteHost());//设置编码格式httpServletRequest.setCharacterEncoding("UTF-8");httpServletResponse.setContentType("text/html;charset=UTF-8");  //转发给下一个过滤器或者对应的servlet 响应请求filterChain.doFilter(httpServletRequest,httpServletResponse); }/*** 销毁*/@Overridepublic void destroy() {Filter.super.destroy();}}
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运筹学经典问题(四):多商品网络流问题

问题描述 多商品网络流问题&#xff08;Multicommodity Network Flow, MCNF&#xff09;是指在一个图网络中&#xff0c;多个商品从各自起点运输到各自终点的问题。 更具体的&#xff0c;给定一个图网络 G ( V , A ) G(V, A) G(V,A)&#xff1a; K K K&#xff1a;表示商品的…

MTK Android P Sensor架构(一)

需求场景&#xff1a; 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点&#xff0c;是一件比较轻松的事情&#xff0c;但是最近上层应用的同事要求我们按照安卓标准的流程来&#xff0c;这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…

TiDB存储引擎的初步认识

文章目录 TiDB简介分布式系统CAP 理论一致性可用性分区容错性 应用场景关系型模型事务ACID 特性原子性一致性隔离性持久性 与传统非分布式数据库架构对比TiDB 分布式数据库整体架构 TiDB简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同…

静态路由原理与配置

文章目录 静态路由原理与配置一、路由器的工作原理1、路由概述2、路由器的工作原理 二、路由表的形成1、路由表2、路由表的形成 三、静态路由和默认路由1、静态路由的缺点2、默认路由&#xff08;是特殊的静态路由&#xff09;3、查看路由表 四、路由器转发数据包的封装过程五、…

Django模型

一、model 文件中的类的建立&#xff1a; 对应的是数据库中的每个表&#xff0c;类中有什么字段&#xff0c;表就会对应的生成某个字段&#xff0c;主键id字段会自己生成&#xff1b; 数据库中的文件获取&#xff1a;只能通过模型类.objects来获取&#xff0c;不能通过模型类…

TikTok与虚拟现实的完美交融:全新娱乐时代的开启

TikTok&#xff0c;这个风靡全球的短视频平台&#xff0c;与虚拟现实&#xff08;VR&#xff09;技术的深度结合&#xff0c;为用户呈现了一场全新的娱乐盛宴。虚拟现实技术为TikTok带来了更丰富、更沉浸的用户体验&#xff0c;标志着全新娱乐时代的开启。本文将深入探讨TikTok…

数据结构与算法-动态规划-买卖股票的最佳时机

买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交…

C# WPF上位机开发(内嵌虚拟机的软件开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习过halcon的同学都知道&#xff0c;它不仅有很多的图像算子可以使用&#xff0c;而且调试很方便。每一步骤的调试结果&#xff0c;都可以看到对…

C语言内存池的使用场景和代码示例

当然可以。在C语言中&#xff0c;内存池是一种用于管理内存分配的技术。使用内存池可以避免频繁地申请和释放内存&#xff0c;从而提高内存的使用效率&#xff0c;并减少内存碎片。内存池的使用场景主要包括需要频繁分配和释放相同大小的内存块的情况。下面是一个简单的C语言代…

什么是云际计算?SD-WAN在云际计算中的作用是什么?

在当今数字化时代&#xff0c;云计算已经成为企业处理数据和应用程序的主要方式。然而&#xff0c;随着物联网设备数量的增加和对实时性要求的提高&#xff0c;传统的集中式云计算模型面临一些挑战。为了解决这些问题&#xff0c;云际计算&#xff08;Edge Computing&#xff0…

TDengine Kafka Connector将 Kafka 中指定 topic 的数据(批量或实时)同步到 TDengine

教程放在这里&#xff1a;TDengine Java Connector&#xff0c;官方文档已经写的很清晰了&#xff0c;不再赘述。 这里记录一下踩坑&#xff1a; 1.报错 java.lang.UnsatisfiedLinkError: no taos in java.library.pathat java.lang.ClassLoader.loadLibrary(ClassLoader.j…

亚马逊、速卖通、虾皮等平台有哪些测评补单方案,哪个比较好用

随着全球电子商务的迅速发展&#xff0c;跨境电商环境的潜力和机遇日益显现。跨境卖家们可以更便捷地将产品销售到全球市场&#xff0c;但同时也面临着更激烈的竞争、更严格的规定和更高的运营成本等挑战。在这个环境中&#xff0c;如何抓住机遇并克服挑战&#xff0c;成为了所…

Harmony OS基本介绍

作为华为最新的操作系统&#xff0c;Harmony OS在全球范围内引起了广泛的关注和探讨。它是一款开放、协同、可定制的智能终端操作系统&#xff0c;可以在不同的设备上实现无缝的互联互通。在本篇文章中&#xff0c;我们将对Harmony OS的使用做一个总结&#xff0c;分别从以下几…

数据库系统相关概念

数据&#xff1a;描述事务的符号记录。 数据库(DB)&#xff1a;按一定的数据模型组织&#xff0c;描述和存储在计算机内的&#xff0c;有组织的&#xff0c;可共享的数据集合。 数据库管理系统(DBMS)&#xff1a;位于用户和操作系统之间的一层数据管理软件。主要功能包括&#…

基于Qt的蓝牙Bluetooth在ubuntu实现模拟

​# 前言 Qt 官方提供了蓝牙的相关类和 API 函数,也提供了相关的例程给我们参考。笔者根据 Qt官方的例程编写出适合我们 Ubuntu 和 gec6818开发板的例程。注意 Windows 上不能使用 Qt 的蓝牙例程,因为底层需要有 BlueZ协议栈,而 Windows 没有。Windows 可能需要去移植。笔者…

Java 值传递、引用传递

开始之前&#xff0c;我们先来搞懂下面这两个概念&#xff1a; 形参&实参值传递&引用传递 方法的定义可能会用到 参数&#xff08;有参的方法&#xff09;&#xff0c;参数在程序语言中分为&#xff1a; 实参&#xff08;实际参数&#xff0c;Arguments&#xff09;…

js中常用的字符串操作!!!

1.字符串的长度 // 字符串常用的操作 let str1 "qwasaertrayuasdf"; let str2 "asdfzcxfv"; // 1.字符串的长度 console.log(str1.length);2. charAt() : 返回指定索引位置的字符 // 字符串常用的操作 let str1 "qwasaertrayuasdf"; let str2…

jemeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…

python自动化测试实战 —— 自动化测试框架的实例

软件测试专栏 感兴趣可看&#xff1a;软件测试专栏 自动化测试学习部分源码 python自动化测试相关知识&#xff1a; 【如何学习Python自动化测试】—— 自动化测试环境搭建 【如何学习python自动化测试】—— 浏览器驱动的安装 以及 如何更…

python+pytest接口自动化(10)-session会话保持

在接口测试的过程中&#xff0c;经常会遇到有些接口需要在登录的状态下才能请求&#xff0c;否则会提示请登录&#xff0c;那么怎样解决呢&#xff1f; 上一篇文章我们介绍了Cookie绕过登录&#xff0c;其实这就是保持登录状态的方法之一。 另外一种方式则是通过session进行会…