当前位置: 首页 > news >正文

Java代码审计-Servlet基础(1)

    <form action="/test/getData" method="post"><input type="text" name="id"><br><input type="text" name="username"><br><input type="submit" value="提交"></form>

首先方式是post,用户点击提交,输入的数据用post进行传递。

发现action是/test/getData,去web.xml里去找对应的路径。

    <servlet><servlet-name>getdata1</servlet-name><servlet-class>com.example.servlet.getdata</servlet-class></servlet><servlet-mapping><servlet-name>getdata1</servlet-name><url-pattern>/test/getData</url-pattern></servlet-mapping>

发现是到servlet里的getdata类,转到getdata。getdata有两个方式,一个是doGet,一个是doPost,之前规定了是Post方法,所以数据包就会交给doPost方法进行解决。里面的req就是请求包,我们可以去接收req的数据,req.setCharacterEncoding("UTF-8")是怕里面有乱码先设置一下编码格式,其他的也非常好容易理解。

public class getdata extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");System.out.println("id: " + req.getParameter("id"));System.out.println("username: " + req.getParameter("username"));System.out.println("ContextPath: " + req.getContextPath());Enumeration<String> headerNames = req.getHeaderNames();while (headerNames.hasMoreElements()){String headerName = headerNames.nextElement();System.out.println(headerName+(req.getHeader(headerName)));System.out.println("--------------");}String id = req.getParameter("id");String username = req.getParameter("username");resp.setContentType("text/html;charset=UTF-8");String str = "id:"+id+"<br>"+"name:"+username;resp.getWriter().write(str);// 可以添加响应内容resp.getWriter().write("提交成功");resp.getWriter().flush();}
}

重定向问题:

1. resp.sendRedirect()是重定向,两次响应,第一次是返回需要重定向的页面名字,第二次是返回重定向页面的内容,所以url地址会直接变掉。

2. req.getRequestDispatcher(str).forward(req,resp);是转发,就是一次请求,不需要去告诉页面名字,直接将页面数据返回回来,所以url地址没有变化。

Session

其实很简单,就是req是一次响应就是,发数据回数据,session就是将很多次的发数据回数据称为一次会话。就是当登录成功时,会有一个session标识,只要携带了这个对应的session标识就说明这次响应是在同一个会话里完成的。

jsp

本质上也是一个servlet,但是是基于网站的servlet,类似于在html里做一些动态设置。

request.getAttribute()request.getParameter() 完全不是一回事。

request.getParameter和request.getAttribute的区别

request.getParameter是用来取 HTTP 请求参数(比如表单提交、URL 里的 ?cmd=xxx)。数据来源:浏览器提交。例子

http://localhost:8080/test.jsp?cmd=whoami

string val = request.getParameter("cmd"); // whoami

request.getAttribute("key")是你自己在服务器端 手动存进去的属性,用

request.setAttribute("key", "xxx") 才能取。

数据来源:后端代码,不会自动和表单绑定。

request.setAttribute("key", "whoami"); String val = (String) request.getAttribute("key"); // whoami

http://www.dtcms.com/a/438419.html

相关文章:

  • 微信建网站平台的宁河网站建设
  • 做教育网站有FTP免费网站
  • 【详细】idea设置格式化方式 google style
  • 关于智能体互联协议标准的130天
  • 君正T32开发笔记之IVSP版本环境搭建和编译
  • DDR Study - MR Registers during the Clock Switch
  • Claude Code 的魔力
  • Node.js 常用工具
  • Node.js 的替代品Bun
  • 网站平台建设所需开发工具广安做网站的公司
  • 阿里云做网站送服务器吗显示网站建设中
  • 【AGI使用教程】Meta 开源视觉基础模型 DINOv3(1)下载与使用
  • JAVA之拷贝数组
  • 开源 C# 快速开发(十七)进程--消息队列MSMQ
  • [UnrealEngine] 虚幻编辑器界面 | 虚幻界面详解 | UE5界面详解
  • 旅游网站开发周期成都古怪科技网站建设公司
  • JavaEE初阶——网络原理初探:从独立模式到TCP/IP五层模型
  • 代码随想录算法训练营第五十七天|53.寻宝
  • 构建模拟人类思维过程的高级智能体检索增强生成(Agentic RAG)流水线模糊性检查、多工具规划、自我修正、因果推理等功能
  • 去类似美团网站做软件开发摄影毕业设计选题作品
  • TeR-TSF 论文解读
  • Eclipse 中文语言包安装教程:一键将界面切换为中文
  • id注册网站修改wordpress数据库配置文件
  • Navicat 17最新安装使用教程(附安装包)
  • C语言字符串安全查找三剑客:strchr_s、strrchr_s、strstr_s解析
  • 网络层协议—IP协议
  • 网站设计前沿网站淘宝开店需要多少钱
  • CSP-J复赛模拟赛2 王晨旭补题 2025.10.2
  • 理解Consumer<T>
  • Linux:了解Socket编程