servlet-request(请求)-请求转发

request请求

  • request 请求
  • index.jsp
  • login.jsp
  • success.jsp
  • LoginServlet
  • SuccessServlet
  • 响应写入用户名和密码测试
  • 请求转发success.jsp页面测试
  • 请求转发SuccessServlet 页面测试
  • 重定向SuccessServlet 页面测试

request 请求

作用:获取浏览器发送过来的数据
组成部分:请求行 请求头 请求体
操作请求行:

格式:
请求方式 请求资源 协议/版本
GET /xxxweb/row?username=dyj&password=111 HTTP/1.1
常用方法:HttpServletRequest
掌握:
String getMethod():获取请求方式
String getRemoteAddr():获取ip地址
String getContextPath() :获取当前web项目名称(如:/loginweb)
了解:
getRequestURI():获取从项目名到参数之前的内容 /xxxweb/login
getRequestURL():获取带协议的完整路径 http://localhost/xxxweb/login
String getQueryString():get请求的所有参数 username=djy&password=123
String getProtocol():获取协议和版本

操作请求头(了解):

格式:key/value( value 可以是多个值)
方法:
了解:
String getHeader(String key):通过 key 获取指定的 value (一个)
通过 getHeaders(String name):通过 key 获取指定的 value (多个)
通过 request.getHeaderNames() :获取所有的请求头的名称(先 request 设置响应头)
int getIntHeader(String key):获取整型的请求头
long getDateHeader(String key):获取时间的请求头
请求头:
user-agent:浏览器内核 msie firefox chrome
referer:页面从那里来(防盗链)

操作请求参数(掌握):

username=djy&password=123&hobby=eat
常用方法:
String getParameter(String key):获取一个值(掌握)
String[] getParameterValues(String key):通过一个 key 获取多个值(了解)
Map<String,String[]> getParameterMap():获取所有的参数名称和值(了解)

请求的中文乱码:

request.setCharacterEncoding(“utf-8”);

index.jsp

 <a href="login.jsp">登录</a>

在这里插入图片描述

login.jsp

    <form action="<%=request.getContextPath()%>/login" method="post"><label>用户名:</label><input type="text" name="userName"><br><label>密码:</label><input type="password" name="password"><br><button type="submit">提交</button><label>||</label><button type="reset">重置</button></form>

在这里插入图片描述

success.jsp

    <h1>登录成功</h1><h2>请求域数据对象,从Java代码中拿到</h2><hr>登录名:<%=request.getAttribute("user")%><br>ip: <%=request.getAttribute("ip")%>

LoginServlet

@WebServlet(name = "login", value = "/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求响应编码格式为utf-8request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");//请求拿到用户名和密码String userName = request.getParameter("userName");String password = request.getParameter("password");//请求ip地址//String remoteAddr = request.getRemoteAddr();String localAddr = request.getLocalAddr();//请求协议和版本String protocol = request.getProtocol();//响应写入用户名和密码(把下面代码注释显示数据)response.getWriter().append("用户名:" + userName).append("<br>").append("密码:" + password).append("<br>").append("ip地址:" + localAddr).append("<br>").append("协议和版本:" + protocol);//设置域对象(给success页面中传递数据)request.setAttribute("user",userName);request.setAttribute("ip",localAddr);//请求转发//请求转发(地址不改变,只显示,域对象值可传递)//request.getRequestDispatcher("success.jsp").forward(request,response);//跳转到success.jsp页面request.getRequestDispatcher("success").forward(request,response);//跳转到sucess Servlet页面//重定向//重定向(两次url地址,地址改变,域对象值无法传递)(拿到的值为null)//response.sendRedirect(request.getContextPath()+"/success");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}
}

SuccessServlet

@WebServlet(name = "success", value = "/success")
public class SuccessServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求响应编码格式为utf-8request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");//获取LoginServlet 传递下来的数据String user = (String)request.getAttribute("user");String ip = (String)request.getAttribute("ip");response.getWriter().append("用户名:" + user).append("<br>").append("ip:" + ip);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}
}

响应写入用户名和密码测试

在这里插入图片描述

请求转发success.jsp页面测试

在这里插入图片描述

请求转发SuccessServlet 页面测试

在这里插入图片描述

重定向SuccessServlet 页面测试

在这里插入图片描述

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

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

相关文章

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序&#xff0c;做个笔记&#xff01; 希尔排序也是插入排序的一种捏&#xff01;本篇博客也是用排升序来举例捏&#xff01; 希尔排序是基于直接插入排序的&#xff0c;是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

自动化运维工具---Ansible

一 Puppet Puppet是历史悠久的运维工具之一。它是一种基础架构即代码(laC)工具&#xff0c;使用户可以定义其基础 架构所需的状态&#xff0c;并使系统自动化以实现相同状态。 Puppet可监视用户的所有系统&#xff0c;并防止任何偏离已定义状态的情况。从简单的工作流程自动…

代码本地化

目的 代码本地化&#xff08;Localization&#xff09;是指将软件应用程序中的文本、图形、声音和其他内容翻译成特定语言的过程&#xff0c;同时确保这些内容在目标文化中适当地呈现。本地化不仅仅是对文本进行翻译&#xff0c;还包括对日期、时间、数字、货币、排序顺序、文本…

04-19 周四 GitHub CI 方案设计

04-19 周四 GitHub CI 方案设计 时间版本修改人描述2024年4月19日14:44:23V0.1宋全恒新建文档2024年4月19日17:22:57V1.0宋全恒完成部署拓扑结构的绘制和文档撰写 简介 需求 由于团队最近把代码托管在GitHub上&#xff0c;为解决推理、应用的自动化CI的需要&#xff0c;调研了…

最近惊爆谷歌裁员

Python团队还没解散完&#xff0c;谷歌又对Flutter、Dart动手了。 什么原因呢&#xff0c;猜测啊。 谷歌裁员Python的具体原因可能是因为公司在进行技术栈的调整和优化。Python作为一种脚本语言&#xff0c;在某些情况下可能无法提供足够的性能或者扩展性&#xff0c;尤其是在…

分析:Palo Alto在从SASE向SASO演进中定位不佳

摘要 我们通过上一篇文章&#xff08;Fortinet的愿景——超越SASE&#xff09;中应用于Fortinet的相同框架来回顾Palo Alto Network在网络和网络安全方面的前景。 SASE涉及数据传输的第一英里。不过&#xff0c;随着SASE的发展&#xff0c;投资者还需要考虑中间和最后一英里。…

【JavaScript】数据类型转换

JavaScript 中的数据类型转换主要包括两种&#xff1a;隐式类型转换&#xff08;Implicit Type Conversion&#xff09;和显式类型转换&#xff08;Explicit Type Conversion&#xff09;。 1. 隐式类型转换&#xff08;自动转换&#xff09;&#xff1a; js 是动态语言&…

Docker搭建LNMP+Wordpress的实验

目录 一、项目的介绍 1、项目需求 2、服务器环境 3、任务需求 二、Linux系统基础镜像 三、部署Nginx 1、建立工作目录 2、编写Dockerfile 3、准备nginx.conf配置文件 4、设置自定义网段和创建镜像和容器 5、启动镜像容器 6、验证nginx 三、Mysql 1、建立工作目录…

Kalign 3:大型数据集的多序列比对

之前一直用的是muscle&#xff0c;看到一个文章使用了Kalign&#xff0c;尝试一下吧 安装 wget -c https://github.com/TimoLassmann/kalign/archive/refs/tags/v3.4.0.tar.gz tar -zxvf v3.4.0.tar.gz cd kalign-3.4.0 mkdir build cd build cmake .. make make test su…

【数据结构与算法】之五道链表进阶面试题详解!

目录 1、链表的回文结构 2、相交链表 3、随机链表的复制 4、环形链表 5、环形链表&#xff08;||&#xff09; 6、完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ 数据结构与算法 个人格言&#xff1a;悟已往之不谏&#xff0c;知…

【搜索技能】外链

文章目录 前言一、外链是什么&#xff1f;二、如何进行外链调查&#xff1f;总结 前言 今儿因为在搜索一个很感兴趣的软件&#xff0c;但是软件信息所在的网址非常有限。因此产生了一个念头&#xff1a;我能不能找到所有的包含了或者是引用了这个网站的网站呢? 调查之下&…

解密SSL/TLS:密码套件扫描仪的深度解析(C/C++代码实现)

解密SSL/TLS流量通常是为了分析和审计加密通信&#xff0c;以确保数据传输的安全性和合规性。密码套件扫描仪是实现这一目的的一种工具&#xff0c;它可以提供关于SSL/TLS配置的详细信息&#xff0c;帮助安全专家评估潜在的风险。 SSL/TLS协议基础 SSL/TLS协议是网络安全中不…

select,poll,epoll

在 Linux Socket 服务器短编程时&#xff0c;为了处理大量客户的连接请求&#xff0c;需要使用非阻塞I/O和复用&#xff0c;select&#xff0c;poll 和 epoll 是 Linux API 提供的I/O复用方式。 \selectpollepoll操作方式遍历遍历回调底层实现数组链表哈希表IO效率每次调用都进…

C语言/数据结构——每日一题(环形链表的约瑟夫问题)

一.前言 今天在牛客网上面看到了一道环形链表题&#xff0c;想着和大家们分享一下。可能我有点笨&#xff0c;那道题的链接我没搞好&#xff0c;所以很抱歉&#xff0c;只能麻烦大家们看一下截屏的题目信息了。废话不多数&#xff0c;让我们开始今天的题目分享吧。 二.正文 …

ComfyUI中的图像稀释处理

用下面的节点对图片进行稀释处理&#xff0c;如下 为0表示不变&#xff0c;我设置大一点&#xff0c;设置为0.5看看&#xff0c;如下 图像就暗淡了一些&#xff0c;但是还是有一些彩色的&#xff0c;相当于把它放在水里浸泡了一样&#xff0c;掉色了&#xff0c;这就是稀释&…

公网tcp转流

之前做过几次公网推流的尝试, 今天试了UDP推到公网, 再用TCP从公网拉下来, 发现不行, 就直接改用TCP转TCP了. 中间中转使用的python脚本, 感谢GPT提供技术支持: import socket import threadingdef tcp_receiver(port, forward_queue):"""接收TCP数据并将其放入…

LLM应用:工作流workflow创建自定义模版使用

参考: https://www.coze.cn/ 本案例是在coze平台上操作的,也有其他工具支持工作流的创建例如dify;也例如图像生成的comfyui工作流工具 创建自定义模版 可以根据自己需求创建自己的工作流工具;本文案例是创建一个联网搜索的LLM应用: 创建工作流页面: https://www.coze.c…

X 推出 Stories 功能,由 Grok AI 生成新闻摘要

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Python自动化测试【selenium面试题】

一、selenium中如何判断元素是否存在&#xff1f; expected_conditions模块提供了16种判断方法&#xff0c;以下方法是判断元素存在DOM中&#xff1a; presence_of_element_located """ An expectation for checking that an element is present on the DOM of…

分布式与一致性协议之ZAB协议(三)

ZAB协议 主节点崩溃了&#xff0c;怎么办&#xff1f; 众所周知&#xff0c;系统在运行中不可避免会出现各种各样的问题&#xff0c;比如进程崩溃了、服务器死机了&#xff0c;这些问题会导致很严重的后果&#xff0c;让系统没办法继续运行。在ZAB协议中&#xff0c;写请求是…