Servlet笔记7--HttpServletRequest介绍
通过HttpServletRequest获取表单提交的数据:
前端页面:
<html>
<head>
<title>register</title>
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="/prj-servlet-12/user/save" method="post">
用户名
<input type="text" name="username">
<br>
密码
<input type="password" name="password">
<br>
性别
男<input type="radio" name="sex" value="m">
女<input type="radio" name="sex" value="f">
<br>
爱好
<input type="checkbox" name="interest" value="sport">运动
<input type="checkbox" name="interest" value="music">音乐
<input type="checkbox" name="interest" value="dance">跳舞
<input type="checkbox" name="interest" value="study">学习
<input type="checkbox" name="interest" value="read">阅读
<br>
学历
<select name="grade">
<option value="gz">高中</option>
<option value="dz">大专</option>
<option value="db">大本</option>
</select>
<br>
简历
<textarea rows="10" cols="60" name="introduce"></textarea>
<br>
<input type="submit" value="注册">
<input type="reset" value="重置"> </form>
</body>
</html>
前端页面的name和value对应request对象中Map集合的name和value
Servlet程序:
package com.bjpowernode.javaweb.servlet; import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class SaveUserServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取用户信息,表单提交,这些数据被自动封装到request对象中了
//从request中获取这些信息
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
String interest = request.getParameter("interest");
String grade = request.getParameter("grade");
String introduce = request.getParameter("introduce"); System.out.println(username);
System.out.println(password);
System.out.println(sex);
System.out.println(interest);
System.out.println(grade);
System.out.println(introduce); //这个方法适合取checkbox中的数据
String[] interests = request.getParameterValues("interest");
for(String in : interests){
System.out.println(in);
} //获取整个参数Map集合
@SuppressWarnings("unchecked")
Map<String,String[]> parameterMap = request.getParameterMap();
Set<String> names = parameterMap.keySet();
for(String name : names){
String[] values = parameterMap.get(name);
System.out.print(name + "=");
for(String value : values){
System.out.println(value + " ");
}
System.out.println();
} //获取Map集合所有的key
@SuppressWarnings("unchecked")
Enumeration<String> keys = request.getParameterNames();
while(keys.hasMoreElements()){
String key = keys.nextElement();
System.out.println(key);
} } }
具体介绍HttpServletRequest接口的常用方法:
代码示例:
package com.bjpowernode.javaweb.servlet; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class TestRequestServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter(); //获取上下文路径【webapp的根路径】
String contextPath = request.getContextPath();
out.print("context path = " + contextPath + "<br>"); //获取浏览器的请求方式
String method = request.getMethod();
out.print("method = " + method + "<br>"); //获取请求的URI、URL、Servlet Path
String uri = request.getRequestURI();
out.print("uri = " + uri + "<br>"); String url = request.getRequestURL().toString();
out.print("url = " + url + "<br>"); String servletPath = request.getServletPath();
out.print("servletPath = " + servletPath + "<br>"); //获取客户端IP地址
String clietIp = request.getRemoteAddr();
System.out.println("client ip = " + clietIp);
}
}
代码示例(包含请求转发,在两个Servlet中传递数据,关于请求转发,参考此链接):
package com.bjpowernode.javaweb.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.bjpowernode.javaweb.entity.User; public class AServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建User对象
User user = new User();
user.setUsercode("111");
user.setUsername("zhangsan"); //将User对象存储到request范围中
request.setAttribute("userObj", user); //从request范围中取出数据
//Object obj = request.getAttribute("userObj");
//response.getWriter().print(obj); //跳转
//执行完AServlet之后,跳转到BServlet执行,将AServlet执行和BServlet执行放到同一个请求当中
//必须使用转发技术
//forward[转发]
//1、获取请求转发器对象[以下转发器指向了BServlet]
// RequestDispatcher dispatcher = request.getRequestDispatcher("/b"); //2、调用请求转发器的forward方法即可完成转发
// dispatcher.forward(request, response); //转发[转发是一次请求]
request.getRequestDispatcher("/b").forward(request, response); }
}
package com.bjpowernode.javaweb.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class BServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { Object obj = request.getAttribute("userObj");
response.getWriter().print(obj);
}
}
还剩最后三个方法没介绍,setCharacterEncoding、getCookie、getSession将在后面分别介绍。
Servlet笔记7--HttpServletRequest介绍的更多相关文章
- javaweb:关于HttpServletRequest介绍 (转)
出处:https://www.cnblogs.com/xdp-gacl/p/3798347.html 一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的 ...
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- HTML+CSS学习笔记(1) - Html介绍
HTML+CSS学习笔记(1) - Html介绍 1.代码初体验,制作我的第一个网页 <!DOCTYPE HTML> <html> <head> <meta ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- cocos2d-x入门学习笔记,主要介绍cocos2d-x的基本结构,并且介绍引擎自带的示例
cocos2d-x 3.0 制作横版格斗游戏 http://philon.cn/post/cocos2d-x-3.0-zhi-zuo-heng-ban-ge-dou-you-xi http://blo ...
- InterSystems Ensemble学习笔记(一) Ensemble介绍及安装
系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...
- Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍
原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- jsp、servlet笔记
1.init 初始化Jsp&Servlet方法 destroy 销毁Jsp&Servlet之前的方法 service 对用户请求生成响应的方法2.Jsp文件必须在jsp服 ...
随机推荐
- Final版本互评——杨老师粉丝群《PinBall》
基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着民族自信的觉醒,民主文化越来越受到重视,语文在高考中的比重也不断增加,在这种大环境下,成 ...
- Linux 第五周 实验: 分析system_call中断处理过程
姬梦馨 原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 使用gdb跟踪分析一个系统调用内核函数 ...
- 软件工程之四则运算--Github
由于现在配置问题,然后借用同学电脑将代码上传至Github,网址为:https://github.com/be821/RealFour 参考相关Github文档: 1. http://my.oschi ...
- 微信小程序简易table组件实现
前提:微信小程序自1.6.3基础库版本库开始支持简洁组件,之前的版本因不支持,故在引用组件处默认为空节点.关于微信小程序已有模板为何还需构建组件?一是因为组件可以更方便的自定义并绑定行为,二是在其他页 ...
- #Leetcode# 725. Split Linked List in Parts
https://leetcode.com/problems/split-linked-list-in-parts/ Given a (singly) linked list with head nod ...
- opencv图像识别技术在自动化测试中的应用
在自动化测试中,基于xpath.js选择器.css选择器进行元素定位及判定的技术已经比较成熟.在实际应用中,无论是web端还是移动端,仍有很多时候需要根据页面内容.页面中的图像进行定位及判定,这里介绍 ...
- SSR & Next.js & Nuxt.js
SSR & Next.js & Nuxt.js Server Side Rendering https://nextjs.org/ https://nuxtjs.org/ SSR &a ...
- 04.基于IDEA+Spring+Maven搭建测试项目--application-context.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- MT【201】折线计数
甲乙两人参加竞选,结果甲得n票,乙得m票(n > m) . 则在唱票过程中,甲的累计票数始终超过乙的累计票数的概率是_____________. 答案:$\dfrac{n-m}{n+m}$
- mysql列类型char,varchar,text,tinytext,mediumtext,longtext的比较与选择
储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 – 1) 个字符. TEXT 最大长度是 65535 (2^16 – 1) 个字符. MEDIUMTEXT 最大长度是 16 ...