JavaWeb02(servlet)

news2024/11/25 12:34:03

目录

一.servlet

1.1 什么是servlet?

1.2 实现接口,初始代码

1.3 学会配置和映射

1.4 掌握servlet的生命周期

         生命周期的各个阶段

1.5  获取servlet初始化参数和上下文参数

1.5.1  初始代码  推荐使用

1.5.2 初始化参数

1.5.3 上下文参数

1.6 servlet应用:处理用户登录请求

重点:如何拿到表单提交的数据?

1.6.1 为简化配置,推荐采用注解方式

1.6.2  HttpServletRequest方法:

1.6.3 HttpServletResponse方法

二.表单提交方式

三.页面跳转方式

①重定向

②转发

③区别


一.servlet


1.1 什么是servlet?

Servlet是在服务器端运行的Java程序,可以接收客户端的请求并做出响应

 

Servlet可以动态生成HTML内容对客户端进行响应

 

ServletJSP的关系

 

1.2 实现接口,初始代码

/**
 * 了解servlet的生命周期
 * 构造方法 初始化init( )  销毁destory( )只在第一次的时候被执行
 * service( )每向服务器发送一次请求  都会执行该方法
 * @author 
 *
 */
public class HelloServlet implements Servlet {


    public LoginServlet() {创建}
    
    
    public void destroy() {销毁}


    public ServletConfig getServletConfig() {
        return null;
    }

    
    public String getServletInfo() {
        return null;
    }


    public void init(ServletConfig arg0) throws ServletException {初始化 }


    public void service(ServletRequest arg0, ServletResponse arg1) throws         ServletException, IOException {
        //每向服务器发送一次请求  都会执行该方法
        ("处理请求中~");
    }


1.3 学会配置和映射

<!-- 配置servlet(AAservlet) -->
      <servlet>
          <servlet-name>
aa</servlet-name>
          <servlet-class>
com.zking.servlet.AAservlet</servlet-class>
      </servlet>

<!--  映射servlet(AAservlet) -->
      <servlet-mapping>
          <servlet-name>
aa</servlet-name>
          <url-pattern>
/请求路径</url-pattern>
      </servlet-mapping>

 

<!-- 注意:但凡是改了web.xml文件的内容  务必记得重启服务器再运行!  -->

1.4 掌握servlet的生命周期

         生命周期的各个阶段

 

1.5  获取servlet初始化参数和上下文参数

1.5.1  初始代码  推荐使用

public class LoginServlet  extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

   {
              处理get请求
    }

    @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws

 {

        处理post请求

}

}

1.5.2 初始化参数

<!--配置servlet(HelloServlet)-->

<servlet>
          <servlet-name>bb</servlet-name>
          <servlet-class>com.zking.servlet.BBServlet</servlet-class>
      
          <!-- 初始化参数 -->
          <init-param>
              <param-name>
sb</param-name>
              <param-value>
瑶大头</param-value>
          </init-param>

</servlet>

<!--只能在对应的一个servlet中拿到值:---->

this.getInitParameter("参数名");

1.5.3 上下文参数

 <context-param>
          <param-name>
yy</param-name>
          <param-value>
瑶瑶,大头大头</param-value>
      </context-param>

<!-- 上下文参数:可被整个应用共享 -->

this.getServletContext().getInitParameter("参数名")

1.6 servlet应用:处理用户登录请求

重点:如何拿到表单提交的数据?

1.6.1 为简化配置,推荐采用注解方式

@WebServlet("/请求url")
public class LoginServlet  extends HttpServlet { }

//其等同于

<!-- 配置servlet(AAservlet) -->
      <servlet>
          <servlet-name>aa</servlet-name>
          <servlet-class>com.zking.servlet.AAservlet</servlet-class>
      </servlet>
      <!--  映射servlet(AAservlet) -->
      <servlet-mapping>
          <servlet-name>aa</servlet-name>
          <url-pattern>/aa.do(/请求URL)</url-pattern>
      </servlet-mapping>

1.6.2  HttpServletRequest方法:

[String getParameter(String  name )]: 根据name值得到value

[String [  ]   getParameterValues(String name ) ]: 根据name值得到多个value值   例如: 爱好

[void setCharacterEncoding(String charset) ]:设置请求的编码方式  防止中文乱码

[void setAttribute(String key,object value) ]:存值[键值对的方式]


[Object  getAttribute(String key)]:根据键拿到值

1.6.3 HttpServletResponse方法

[void setContType (String arg0)]:设置响应的编码方式

[PrintWriter  getWriter()]: 获得内置对象out

二.表单提交方式

<form action="请求路径url"  method="get/post"></form>

表单提交有两种方式

        1.get(默认)  地址栏会显示信息,安全性低;有数据长度限制

        2.post  反之  以后推荐使用post

三.页面跳转方式

①重定向

resp.sendRedirect("xx.jsp")

out.print("<script> alert('提示信息');location.href='页面地址';</script>")

②转发

req.getRequestDispatcher("xx.jsp").forward(req, resp);

区别

重定向:  地址栏发生改变;  不能携带数据跳转;  可以跳转到任意资源;  在客户端发挥作用

转发:  地址栏不发生改变,停留在了之前的位置  可以携带数据跳转  只可转发到当前项目内资源;  在服务端发挥作用

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

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

相关文章

融云 CTO 岑裕:出海技术前沿探索和排「坑」实践

在本文中&#xff0c;你将看到以下内容&#xff1a; 全球通信网络在接入点、链路加速、服务商、协议等层面的动态演进&#xff1b; 进入到具体市场&#xff0c;禁运国、跨国拦截、区域一致性差等细节“坑点”如何应对&#xff1b; 融云如何从技术侧帮助开发者应对本地化用户体…

首发支持NOA的单征程3行泊一体域控,这家Tier1开“卷”

NOA正成为智能驾驶下半场的竞争焦点之一。 显然&#xff0c;NOA所处的L2/L2区间&#xff0c;在技术上仍然属于驾驶辅助领域&#xff0c;但在传统L2级ADAS功能的基础上增强了部分场景的功能ODD。在部分政策允许的国家和地区&#xff0c;可以实现有条件的「解放双手」。 高工智…

centos搭建vue3运行环境

一、安装 nodejs 1.下载&解压 Node.js官网&#xff1a;Download | Node.js cd /usr/local/src/wget -c https://nodejs.org/dist/v16.18.1/node-v16.18.1-linux-x64.tar.xz xz -d node-v16.18.1-linux-x64.tar.xz tar -xf node-v16.18.1-linux-x64.tarmv node-v…

threejs学习随笔(入门篇)

前言&#xff1a;three.js和webgl Three.js经常会和WebGL混淆&#xff0c; 但也并不总是&#xff0c;three.js其实是使用WebGL来绘制三维效果的。 WebGL是一个只能画点、线和三角形的非常底层的系统. 想要用WebGL来做一些实用的东西通常需要大量的代码&#xff0c; 这就是Thre…

C语言函数大全-- p 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- p 开头的函数 1. perror 1.1 函数说明 函数声明函数功能void perror(const char *s);用于将当前错误码对应的错误信息打印到标准输出设备&#xff08;通常是终端&#xff09;。 参数&#xff1a; s &#xff1a; 用于描述错误类型或…

班级页面设计——【3-相关活动页面】内容使用HTML以及css和Javascripts技术

系列文章目录 班级页面设计——【1-登陆注册页面】_网页制作实现登录注册 班级页面设计——【2-主界面部分】_班级首页展示 文章目录 系列文章目录 前言 一、页面效果介绍 1.1、页面展示 1.2、简单介绍 二、代码展示部分 2.1、html代码部分 2.2、css代码部分 前言 …

C++(继承中)

目录&#xff1a; 1.基类和派生类对象赋值转换 2.派生类当中的6个默认成员函数 --------------------------------------------------------------------------------------------------------------------------- 派生类对象可以赋值给 基类的对象/基类的指针/基类的引用&am…

“量子计算+个性化医疗”!富士通和BSC利用张量网络推进新研究

​ &#xff08;图片来源&#xff1a;网络&#xff09; 富士通和巴塞罗那超级计算中心(BSC)正在签署一项合作协议&#xff0c;通过利用临床数据促进个性化医疗&#xff0c;并使用张量网络推进量子模拟技术。 双方将于2023年5月开始联合研究&#xff0c;第一个合作项目旨在利用不…

CSGO搬砖,每天1-2小时,23年最强副业非它莫属(内附操作流程)

自从我学会了CSGO搬运&#xff0c;我发现生活也有了不小的改变&#xff0c;多了一份收入&#xff0c;生活质量也就提高了一份。 其实刚接触CSGO&#xff0c;我压根就不相信这么能挣钱&#xff0c;因为在印象中&#xff0c;游戏供玩家娱乐竞技的&#xff0c;作为我这种技术渣渣…

VUE3如何定义less全局变量

默认已经安装好了less&#xff0c;这里不过多讲。 &#xff08;1&#xff09;首先我们需要下载一个插件依赖&#xff1a; npm i style-resources-loader --save-dev &#xff08;2&#xff09;VUE3里配置vue.config.js文件内容 代码&#xff1a; const path require("p…

U盘安装Windows11和ubuntu20.04双系统

准备&#xff1a; 一台PC电脑&#xff08;我的是两个固态硬盘&#xff09; 一个U盘&#xff08;最好不小于32G&#xff09; 下载安装工具&#xff1a; 老白菜u盘启动盘制作工具_u盘启动_u盘装系统下载尽在老白菜官网 最新UltraISO官方免费下载 - UltraISO软碟通中文官方网…

数据结构与算法(九) 树

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲树 树是一种常见的数据结构&#xff0c;其定义为&#xff1a;由有限个节点组成的具有层次关系的集合 解决树问题的关键是递归&#xff0c;递归的关键是分解子问题 对于树来说&#xff0c;递归函数只要考虑对单个节点如何处…

波奇学Linux:Linux的认识和云服务器使用

在讲Linux前&#xff0c;我们先来理解计算机&#xff1a; 计算机&#xff1a;输入->算法->输出 举个栗子&#xff1a; pritnf :输出到屏幕&#xff08;硬件&#xff09;上 我们在计算机所有的行为都会转为硬件行为。 再进一步理解,我们打开visual studio后&#xff0c;敲…

BPF技术学习与整理

目录 eBPF是什么&#xff1f; eBPF是做什么的&#xff1f;可以解决什么问题&#xff1f; eBPF可以带来的解决方案是什么&#xff1f; eBPF的技术点 eBPF hookeBPF MapeBPF Helper FunctioneBPF有什么限制吗&#xff1f; 前言 21年因为项目需求而要开发一个工具&#xff0c;可以…

如何通过docker启动一个本地springboot的jar包

一、构建本地jar包 进入到项目目录下执行如下命令 mvn -e clean package -Dmaven.test.skiptrue或者直接在idea中打包 得到target文件夹 进入到target文件夹得到jar包 二、创建Dockerfile文件 新建Dockerfile文件&#xff0c;内容如下 FROM openjdk:8-jre MAINTAINER ja…

硬盘坏掉之后

文章目录 背景解决方案数据丢失软件安装 总结 背景 前一段时间&#xff0c;我的电脑突然就开不了机了&#xff0c;进入安全模式之后&#xff0c;发现硬盘无法读取&#xff0c;大概率是硬盘坏掉了。电脑是 MacBook&#xff0c;自己不太好换。于是跑到华强北&#xff0c;找了一家…

电脑无论是连接热点,还是公共网络,qq、微信都能用,就是不能上网,现分享解决办法如下。

这里写自定义目录标题 问题引入&#xff1a;解决办法1、打开电脑的控制面板2、点击 “网络和internet”3、点击 “internet 选项”4、点击 “连接”5、点击 “局域网设置”6、按照下面操作 问题引入&#xff1a; 在魔法使用网站之后&#xff0c;忘记关闭 clash 按钮就关闭电脑&…

Spring-学习修改尚硅谷最新教程笔记

二、Spring 1、Spring简介 1.1、Spring概述 官网地址&#xff1a;https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架&#xff0c;数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Jav…

数据湖Iceberg-SparkSQL集成(4)

文章目录 数据湖Iceberg-SparkSQL集成一、环境准备安装Spark 二、Spark配置Catalog2.1在配置文件中添加HiveCatalog与HadoopCatalog配置&#xff08;一劳永逸&#xff09;2.2使用spark-sql连接Hive Catalog2.3使用spark-sql连接Hadoop Catalog 三、SQL操作3.1 创建表创建分区表…

一个 24 通道 100Msps 逻辑分析仪

这是一个创建非常便宜的逻辑分析仪的项目&#xff0c;但其功能可与昂贵的商业分析仪相媲美。该分析仪可以以每秒 1 亿个样本的最高速度对多达 24 个通道进行采样&#xff0c;并且可以通过单个通道中的极性变化或多达 16 个通道形成的模式来触发。 该项目不仅包含硬件&#xff0…