HttpServletRequest

1 HttpServletRequest概述

2 request运行流程

3 通过抓包工具抓的http请求

4 请求行信息的相关方法

        //1、获得请求方式
String method = request.getMethod();
System.out.println("method:"+method);
//2、获得请求的资源相关的内容
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
System.out.println("uri:"+requestURI);
System.out.println("url:"+requestURL);
//获得web应用的名称
String contextPath = request.getContextPath();
System.out.println("web应用:"+contextPath);
//地址后的参数的字符串
String queryString = request.getQueryString();
System.out.println(queryString);
//3、获得客户机的信息---获得访问者IP地址
String remoteAddr = request.getRemoteAddr();
System.out.println("IP:"+remoteAddr);

结果:

5 获得请求头

        //1、获得指定的头
String header = request.getHeader("User-Agent");
System.out.println(header);
//2、获得所有的头的名称
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName+":"+headerValue);
}

6 获得请求体

    //1、获得单个表单值
String username = request.getParameter("username");
System.out.println(username);
String password = request.getParameter("password");
System.out.println(password);
//2、获得多个表单的值
String[] hobbys = request.getParameterValues("hobby");
for(String hobby:hobbys){
System.out.println(hobby);
}
//3、获得所有的请求参数的名称
Enumeration<String> parameterNames = request.getParameterNames();
while(parameterNames.hasMoreElements()){
System.out.println(parameterNames.nextElement());
}
System.out.println("------------------");
//4、获得所有的参数 参数封装到一个Map<String,String[]>
Map<String, String[]> parameterMap = request.getParameterMap();
for(Map.Entry<String, String[]> entry:parameterMap.entrySet()){
System.out.println(entry.getKey());
for(String str:entry.getValue()){
System.out.println(str);
}
System.out.println("---------------------------");
}

7 request的其他功能

7.1 request是域对象

7.2 请求转发

图解

请求和重定向

7.3 request的细节

8 完成用户的注册

8.1 注册分析

8.2 基本实现

        //使用BeanUtils进行自动映射封装
//BeanUtils工作原理:将map中的数据 根据key与实体的属性的对应关系封装
//只要key的名字与实体的属性 的名字一样 就自动封装到实体中
Map<String, String[]> properties = request.getParameterMap();
User user = new User();
try {
BeanUtils.populate(user, properties);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
} //现在这个位置 user对象已经封装好了
//手动封装uid----uuid---随机不重复的字符串32位--java代码生成后是36位
user.setUid(UUID.randomUUID().toString()); //3、将参数传递给一个业务操作方法
try {
regist(user);
} catch (SQLException e) {
e.printStackTrace();
} //4、认为注册成功跳转到登录页面
response.sendRedirect(request.getContextPath()+"/login.jsp"); } //注册的方法
public void regist(User user) throws SQLException{
//操作数据库
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?)"; runner.update(sql,user.getUid(),user.getUsername(),user.getPassword(),user.getName(),
user.getEmail(),null,user.getBirthday(),user.getSex(),null,null);
}

8.3 乱码问题

代码实现

//设置request的编码---只适合post方式
request.setCharacterEncoding("UTF-8"); //get方式乱码解决
//String username = request.getParameter("username");//乱码
//先用iso8859-1编码 在使用utf-8解码
//username = new String(username.getBytes("iso8859-1"),"UTF-8");

JSP-request(httpServletRequest)的更多相关文章

  1. jsp Request获取url信息的各种方法比较

    从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String p ...

  2. jsp request 获取路径

    这篇教程不错:http://zjutsoft.iteye.com/blog/1084260 自己试验如下: System.out.println("-----------------serv ...

  3. jsp request 对象详解

    转自:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 1.request对象 客户端的请求信息被封装在request对象中 ...

  4. 从0开始学Java——JSP&Servlet——HttpServletRequest相关的几个路径信息

    在HttpServletRequest中有几个获取路径的接口:getRequestURI/getContextPath/getServletPath/getPathInfo 这些接口互相之间有什么区别 ...

  5. JSP Request方法大全

    协议:request.getProtocol() 输出:HTTP/1.1 服务器信息 getServletConfig().getServletContext().getServerInfo() 输出 ...

  6. jsp request.getParameterValues获取数组值代码示例

    tt.jsp <form action="tt2.jsp" method="POST"> <select name="two&quo ...

  7. JSP - request - 1

    <%@ page language="java" contentType="text/html;charset=utf8" %> <%@ pa ...

  8. Jsp request

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030" ...

  9. spring mvc获取request HttpServletRequest

    1.最简单的方式(注解法) 2. 直接的方法,参数中添加(response类似) package spittr.web; import static org.springframework.web.b ...

  10. jsp request对象

    getParameter( ) :返回name指定参数的参数值 String[]  getParameterValues(String name)    :返回包含参数name的所有值的数值 getA ...

随机推荐

  1. 上传本地项目到码云(gitee)

    1.码云上创建一个项目比如zhirong 2.本地创建一个文件夹F:\workspace\zhirong-items,进入zhirong-items打开git bash 3.执行git init ,这 ...

  2. 第二周——1.项目中MySQL版本问题

    1.版本升级 经组长推荐,本地安装的是mysql-8.0.11,而主项目用的还是版本5.6, 因此需要升级版本. 首先,更新驱动:下载mysql-connector-java-8.0.11,将E:\P ...

  3. vue-cli# 项目结构

    引自:https://segmentfault.com/a/1190000007880723 http://blog.csdn.net/hongchh/article/details/55113751 ...

  4. JZOJ5898【NOIP2018模拟10.6】距离统计

    题目 题目大意 给你带边权的树,然后有多高询问,每次询问距离某个点第kkk近的节点的距离. 思考 一眼看下去,首先就是想到如何动态的区间第K大,还要支持区间修改-- 于是想了半天,觉得不可做-- 最终 ...

  5. Joomla 随记

    使用 joomla 开发好几个网站了,记录一下基础的东西吧~ 一.下载: 进入 joomla官网 下载:   二.安装 Joomla: 把下载好的 joomla 放到网站文件夹(图为wamp阿帕奇服务 ...

  6. git add命令后出现Another git process seems to be running in this repositor...错误提示

    问题原因 在控制台使用git命令操作时,使用了 git commit 进入了commit信息书写页面,大多数人因为不太熟悉vim的操作导致不知怎么结束编写,就进行了直接关闭控制台的操作,但是此时git ...

  7. md5密码入库

    <?php //连接数据库 $pdo = new PDO('mysql:host=localhost;dbname=md5;charset=UTF8', 'root', ''); # 设置为fa ...

  8. N!中素因子p的个数 【数论】

    求N!中素因子p的个数,也就是N!中p的幂次 公式为:cnt=[n/p]+[n/p^2]+[n/p^3]+...+[n/p^k]; 例如:N=12,p=2 12/2=6,表示1~12中有6个数是2的倍 ...

  9. 谈谈数据库sql编写

    本文主要给初学者关于关系数库的一个浮光掠影式的介绍,如果想深入理解,必须对于下文提到的每个内容单独深入学习! it-information technology的简称,中文是信息机技术,信息其实就是数 ...

  10. git放弃本地所有未提交的修改

    1.未添加至暂存区的 git checkout . 2.已添加至暂存区的 git reset HEAD . git checkout .