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 ...
随机推荐
- echart 折线渐变 加柱形图结合图形,左右纵轴自设置格式,现行图北京渐变 ,x轴字体倾斜
app.title = '折柱混合'; option = { grid: { left: '5%', //距离左边的距离 right: '5%', //距离右边的距离 top:'8%', bottom ...
- mybatis的if标签判断子类属性-There is no getter for property named 'export' in
1 <select id="findList" resultType="BndExport"> SELECT <include refid=& ...
- kali优化配置(2)
下次再安Java吧...心累小赵在线哭泣... 0x01 安装显卡驱动 安装GPU,加速密码破解: grub--kali的启动器 0x02 并发线程限制 ulimit由于限制当前shell内进程的资源 ...
- 手机端 css 样式重置
@charset "utf-8"; body, div, ul, li, ol, h1, h2, h3, h4, h5, h6, input, textarea, select, ...
- 2018-10-16-weekly
Algorithm 判断子序列 What 给定字符串 s 和 t ,判断 s 是否为 t 的子序列.如,"ace"是"abcde"的一个子序列,而"a ...
- 微信公众号开发(二)获取access_token
参考:https://www.cnblogs.com/liuhongfeng/p/4848851.html 一:介绍. 接口调用请求说明 http请求方式: GET https://api.weixi ...
- 在使用mybatis中指定字段查询
1:需求:查询学过“叶平”老师所教的所有课的同学的学号.姓名: List<Map<String,Object>> selectYepingAllCourse(@Param(&q ...
- 帝国CMS编辑器粘贴Word图片
图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用,但是项目要求需要支持所有的浏览器,包括Windows和macOS系统.没有办 ...
- SpringBoot怎么访问html文件
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- UE4 命令行打开工程
创建快捷方式,目标填写: D:\EpicGames\4.14\Engine\Binaries\Win64\UE4Editor.exe "D:\YourProjectPath\YouProje ...