java_第一年_JavaWeb(5)
HttpServletRequest对象
通过HttpServletRequest对象可获取客户端在访问服务器时,请求的所有信息
- 获取客户机的信息
- getRequestURL:返回客户端发出请求时的完整URL
- getRequestURI:返回请求行中的部分资源名名称
- getQueryString:返回请求中的参数部分
- getRemoteAddr:返回请求中客户机的IP地址
- ......
String requestURL= request.getRequestURL;
String requestURI = request.getRequestURI;
String queryString = request.getQueryString;
String IP = getRemoteAddr;
- 获取客户机的请求头
- getHeader(string name);返回String;
- getHeaders(String name);返回Enumeration;
- getHeaderNames();返回Enumeration;返回所有的请求头;
PrintWriter out = response.getWriter();
Enumertion<String> reqHeadInfos = request.getHeaderNames();
while(reqHeadInfos.hasMoreElements()){
String name = reqHeadInfos.nextElement();
String value = request.getHeader(name);
out.write(name +":"+value);
}
- 获取客户端提交的数据
- getParameter(String name );
- getParameterValues(String name);
- getParameterMap();编写框架时常用;
表单信息:
<form action="xxx" method = "post">
<input type="text" name = "userid" maxlength = ""><br>
<input type="checkbox" name = "hobby" value = "唱歌">唱歌
<input type="checkbox" name = "hobby" value = "跳舞">跳舞
<input type="checkbox" name = "hobby" value = "rap">rap
<input type="checkbox" name = "hobby" value = "打篮球">打篮球
<br>
所提交到的xxxjava文件中通过request获取其提交的数据:
PrintWriter out = response.getWriter();
String username = request.getParameter("name");
String[] hobbys = request.getParameterValues("hobby");
String hobbyStr = "";
for (int i = ;hobbys!=null && i <hobbys.length;i++){
if(i = hobbys.length-){
hobbyStr += hobbys[i];
}else{
hobbyStr +=hobbys[i]+",";
}
}
out.write("name="+username);
out.write("hobbys="+hobbyStr);
request接收表单出现乱码问题
- 以POST方式提交表单
出现乱码的原因是服务器和客户端沟通的编码不一致,而服务器可以通过ServletRequest接口继承而来的setCharacterEncoding(charset)方法来统一编码设置;
在获取数据前先统一编码设置:
request.setCharacterEncoding("UTF-8");
- 以GET方式提交表单
即使统一编码,以GET方式提交的表单也会出现乱码,原因未知,request对象是以ISO8859-1的字符编码来接收数据,为了可以解决乱码问题,request对象需先获取以ISO8859-1字符编码接收到的数据的字节数组,再指定以"UTF-8"编码重新构建字符串;
PrintWriter out = response.getWriter();
String name = request.getparameter("name");
name = new String(name.getBytes("ISO8859-1"),"UTF-8");
out.write("name = "+name);
Request对象实现转发
之前我们有学过通过ServletContext实现转发:
RequestDispatcher reqDispatcher = this.getServletContext().getRequestDispatcher("/xxx/xxx");//这里返回的RequestDispatcher对象也可由request对象直接通过getRequestDispatcher()方法获取到
reqDispatcher.forward(request,response);//再通过forward方法实现请求转发
因此通过Request对象实现转发如下:
request.getRequestDispatcher("/xxx/xxx").forward(request,response);
java_第一年_JavaWeb(5)的更多相关文章
- java_第一年_JavaWeb(14)
EL :EL表达式主要用于获取数据.执行运算.获取对象.调用java方法: 获取数据 语法:"${标识符}" 会调用pageContext.findAttribute方法,从pag ...
- java_第一年_JavaWeb(13)
JSTL标签库——核心标签库 为了弥补html标签的不足,为了更加方便地在jsp页面中使用java逻辑代码,JSTL标签库因运而生,而其中的佼佼者,被恩宠最多的就是核心标签库了: 核心标签库从功能上可 ...
- java_第一年_JavaWeb(11)
自定义标签:主要是用来移除JSP页面中的java代码. 先从一个简单的案例了解其怎么移除代码: 一个正常的jsp页面: <%@ page language="java" pa ...
- java_第一年_JavaWeb(15)
Filter过滤器,Servlet API 中提供了一个Filter接口,用于实现用户在访问某个目标资源前对其进行拦截: 拦截原理:web服务器通过Filter接口调用doFilter方法,会传递一个 ...
- java_第一年_JavaWeb(12)
SimpleTag标签 定义了五个方法:setJspContext.setJspBody.setParent和getParent以及最重要的doTag方法(完成了所有的业务逻辑): setJspCon ...
- java_第一年_JavaWeb(10)
JavaWeb的两种开发模式 JSP+JavaBean框架:JavaBean负责封装数据.提供方法,JSP负责处理用户请求和显示数据:只能开发较为简单的业务: JSP+JavaBean+Servlet ...
- java_第一年_JavaWeb(9)
JavaBean是一个遵循某种特定写法的Java类,有以下特点: 必需具有一个无参的构造函数 属性必需私有化 私有化的属性必需通过public类型的方法暴露给其它程序,其方法命名也有一定的规范 范例: ...
- java_第一年_JavaWeb(8)
前面说到,JSP在运行时会被编译成Servlet源代码,通过_jspServlet方法处理请求,此时该方法会传递和提供9个与web开发相关的对象进行使用,开发人员在JSP页面通过对这些变量即可引用这9 ...
- java_第一年_JavaWeb(7)
JSP执行过程 客户端发出请求访问JSP文件 JSP Container将要访问的JSP文件转译为Servlet的源代码(转译时期),并将其编译成.class文件(编译时期): 执行编译后的.clas ...
- java_第一年_JavaWeb(6)
会话 会话:浏览器从打开一个进程访问服务器到该浏览器关闭,我们称之为一个会话: 在浏览器和服务器交互期间,会不可避免地产生一些数据,而为了为每个用户保存其对应的数据,可使用两种技术:Cookie和Se ...
随机推荐
- zabbix3.4.8中提示host [4gronghe_110] not found
查看zabbix_agentd.log时出现下列错误 [root@4gronghe_110 ~]# tail /var/log/zabbix/zabbix_agentd.log 1266:2014 ...
- Linq 高级应用实例
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- 解决SVN异常 cleanup failed
winndows上偶尔使用SVN的时候就会整出一些有的没的问题,比如"cleanup failed to process the following paths previous opera ...
- 脚本_获取本机 MAC 地址
#!bin/bash#作者:liusingbon#功能:获取本机 MAC 地址ip a s |awk 'BEGIN{print "本机 MAC 地址信息如下:"}/^[0-9]/{ ...
- leetcode69. x 的平方根 🌟
题目: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 ...
- 【转】一文搞懂C语言回调函数
转:https://segmentfault.com/a/1190000008293902?utm_source=tag-newest 什么是回调函数 我们先来看看百度百科是如何定义回调函数的: 回调 ...
- NOIP2011提高组 Day1 T3 Mayan游戏
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个7行×5列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定的步 ...
- 对Promise的研究3
Promise.race() Promise.race方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例. const p = Promise.race([p1, p2, p ...
- CocoaPods进阶:本地包管理
http://www.iwangke.me/2013/04/18/advanced-cocoapods/ 粉笔网的iOS工程师唐巧曾经写过一篇blog<使用CocoaPods来做iOS程序的包依 ...
- 获取系统的documents路径
获取路径 https://superuser.com/questions/1132288/windows-command-prompt-get-relocated-users-documents-fo ...