Servlet 响应 响应相关与重定向 请求 获取表单数据2种方法

时间:2021-12-13 07:07:35

一、HttpServletResponse  (响应)

包括下面三个:

1、响应消息行  HTTP/1.1  200 OK

200是HTTP状态码, 代表请求已成功。 (查httpservletresponse类可知)

setStatus(int sc) 设置响应状态码

2、响应消息头

sendRedirect(String location)                 请求重定向

setHeader(String name, String value)    设置响应头信息

告诉浏览器使用什么编码表

response.setHeader("content-type", "text/html;charset=UTF-8");

设置3秒后刷新跳转到/day9/servlet/demo1

response.setHeader("referesh",  "3;url=/day9/servlet/demo1");

3、响应正文(主体)

  • *** getWriter();    字符输出流
  • getOutputStream();    字节输出流
  • setCharacterEncoding(String charset)    告知服务器使用什么编码
  • *****setContentType(String type)

二、响应相关操作与重定向操作

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

1.建立HttpServlet应用

2.然后按照下图在doGet方法中输入:箭头1和箭头2功能一样,写一个就行。

getWriter()字符输出流方法的使用

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

然后加载应用,启动tomcat

然后在浏览器中输入:

http://localhost:8080/day9/servlet/demo1

就会在浏览器中显示: 你好!

getOutputStream()字节输出流方法的使用:

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

上述程序response细节说明:

getOutputStream用于得到(返回)输出二进制数据的ServletOuputStream对象。

getWriter方法用于得到(返回)输出文本数据的Printwriter对象。

getOutputStream和getWriter这两个方法互相排斥,调用了其中的任何一个方法后,就不能再调用另一方法。不然会抛异常。

Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据(其实就是调用write和getwriter方法),将被tomcat从response里面获取,然后将这些数据当作响应消息的正文,与响应状态行和响应消息头组合后输出到客户端

 请求重定向

先访问7,被告知重定向到8

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

Demo7.java

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

注意!先执行完这句话,再跳转

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

Demo8.java

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

浏览器输入:http://localhost:8080/day9/servlet/demo7

三、HttpServletRequest (请求)

1、请求消息行  

Resquest类中的方法

//获得请求方式     GET

request. getMethod()

//返回客户端发出请求时的完整URL

request.getRequestURL()

//返回请求行中的资源名部分

request.getRequestURI()

    //  获得当前应用的虚拟目录  

request.getContextPath()

 //返回请求行中的参数部分。

request.getQueryString()

2、请求消息头

String   getHeader(String name)  根据头名称得到这个头的值

Enumeration   getHeaderNames()  得到所有头名称

Enumeration   getHeaders(String name)  根据头名称得到所有相同头名称的值

域对象:就是Java编译系统中的非基本类性数据的类名

例如:private Test instance;//Test是当前类,instance就是当前类的域对象

3、请求正文(重要)

与          获取表单数据       相关的方法

getParameter(name) 根据表单中name属性的名字,获取value属性的值方法

getParameterValues(String name)专业为复选框取值提供的方法

getParameterNames() 得到表单提交的所有name的方法

getParameterMap 得到表单提交的所有值的方法   

getInputStream  以字节流的方式得到所有表单数据

 

与操作  非表单数据    相关的方法(request也是一个域对象)

将非表单的数据添加到request的域中(name是自己取得名字,value是值)

void setAttribute(String name, Object value);

从request对象中获取name的值

Object getAttribute(String name);

将request对象中的移除

Void removeAttribute(String name);

与       请求转发     相关的方法

     //得到请求转发的协助对象

RequestDispatcher getRequestDispatcher(String path)

相关的方法:

forward(ServletRequest request, ServletResponse response) //请求转发的方法

include(ServletRequest request, ServletResponse response) //请求包含的方法

与      请求编码       相关的方法:

//解决post方式编码

*****request.setCharacterEncoding("UTF-8"); //告诉服务器客户端什么编码,只能处理post请求方式

//解决get方式编码

String name = new String(name.getBytes(“iso-8859-1”),”UTF-8”);

四、获取表单数据的两种方法

建立一个register.html文件

然后按照下面写一个form表单

注意下面按照method="post"方式传输

<body>
<form action="/day9_3/servlet/demo3" method="post">
用户名:<input type="text" name="userName"/><br/>
密码:<input type="password" name="pwd"/><br/>
性别:<input type="radio" name="sex" value="男" checked="checked"/>男
<input type="radio" name="sex" value="女"/>女 <br/>
爱好 :
<input type="checkbox" name="hobby" value="篮球"/>篮球
<input type="checkbox" name="hobby" value="唱歌"/>唱歌
<input type="checkbox" name="hobby" value="编码"/>编码
<br/>
所在城市:
<select name="city">
<option>------请选择------</option>
<option value="bj">北京</option>
<option value="sh">上海</option>
<option value="gz">广州</option>
</select>
<br/> <input type="submit" value="注册"/>
</form>
</body>

第一种

Demo3.java 详细步骤见 Servlet三种创建方式

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//解决乱码问题:告诉服务器要使用什么编码,注:浏览器使用的是什么编码(UTF-8)传过来的就是什么编码
//因为浏览器是post传输所以,服务器(test1()方法)端应该添加下面语句
request.setCharacterEncoding("UTF-8");//只能解决post方式的乱码
test1(request);
}
private void test1(HttpServletRequest request) throws UnsupportedEncodingException {
//获取表单数据
//根据表单中name属性的名字,获取value属性的值方法
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
String sex = request.getParameter("sex");
// 专为复选框提供的方法,当在表单中一个都没有选择时,那么hobbys的值是null
String[] hobbys = request.getParameterValues("hobby"); String city = request.getParameter("city"); //如果register.html中的method是get方式,那么需要下面的语句进行转码,不然会出现乱码。
// sex = new String(sex.getBytes("iso-8859-1"),"UTF-8"); System.out.println(userName);
System.out.println(pwd);
System.out.println(sex);
System.out.println(city); for (int i = 0;hobbys!=null && i < hobbys.length; i++) {
System.out.print(hobbys[i]+"\t");
}
System.out.println();
}

在浏览器中输入:

http://localhost:8080/day9_3/register.html

然后一定要在表单中输入一些数据然后注册提交后,就会在myeclipse的底部看到提交的数据了。

如果改成get方式如下图1,那么在test1()中应该加上一句话,如下图2:

 Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

Servlet 响应   响应相关与重定向   请求   获取表单数据2种方法

建议使用POST方法

第二种

Demo3.java 详细步骤见《建立HttpServlet应用步骤.doc》

getParameterNames() 方法:得到表单提交的所有的name

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");//只能解决post方式的乱码
test2(response);
}
private void test2(HttpServletRequest request) {
//获取所有的表单name的名子
Enumeration names = request.getParameterNames();
while(names.hasMoreElements()){
//因为表单里的内容都是字符串,所以强转一下,得到每一个name名
String name = (String) names.nextElement();
//根据name名,得到value值,使用getParameterValues的原因是因为有hobby复选框 ,其实getParameterValues也能接受单个字符串,所以使用这个。
String[] values = request.getParameterValues(name);
for (int i = 0;values!=null && i < values.length; i++) {
// 输出name和value值
System.out.println(name+"\t"+values[i]);
}
}
}

注意:浏览器 一定要刷新缓存  ,重新部署应用,重启tomcat

在浏览器中输入:http://localhost:8080/day9_3/register.html

Servlet 响应 响应相关与重定向 请求 获取表单数据2种方法的更多相关文章

  1. Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...

  2. ASP&period;NET MVC 获取表单数据

    public class Person { public string Name{get;set;} public string Phone{get;set;} } view层 @model Mode ...

  3. 1&period;3(学习笔记)Servlet获取表单数据

    一.Servlet获取表单数据 表单提交数据经由Servlet处理,返回一个处理结果显示在页面上, 那么如何获取表单提交的参数进出相应的处理呢? 主要用到以下方法: String  getParame ...

  4. php学习笔记-获取表单数据

    在网页上经常要填写用户名和密码,点击确认按纽之后,用户名和密码经过前端处理之后发送到了服务器上,那么服务器端怎么获取到这些用户提交的数据呢?就是通过超级全局变量 _POST和_GET 先拿_POST做 ...

  5. 用Servlet获取表单数据

    用Servlet获取表单数据 在webroot下新建userRegist2.jsp 代码如下: <%@ page contentType="text/html;charset=gb23 ...

  6. FromData获取表单数据

    一般想要不刷新页面提交数据时,可以使用ajax提交.如果数据量不大可以自己写json数据用ajax提交到后台服务,但是数据量多且需要动态添加数据时,自己写json格式数据就有点麻烦了,这时候就需要Fo ...

  7. JS--轻松设置获取表单数据

    接触过Angularjs的都知道,ng支持双向绑定,我们可以轻轻松松的通过ngModel将我们的值绑定到界面,当修改了值提交表单的时候不需要再重新通过ID去重新抓取输入框信息了.那对于我们开发前台网站 ...

  8. django获取表单数据

    django获取单表数据的三种方式 v1 = models.Business.objects.all() # v1是QuerySet的列表 ,内部元素都是对象 v2 = models.Business ...

  9. Day20-单表中获取表单数据的3种方式

    1. 搭建环境请参考:http://www.cnblogs.com/momo8238/p/7508677.html 2. 创建表结构 models.py from django.db import m ...

随机推荐

  1. c&plus;&plus;共享内存(转载)

    对于连个不同的进程之间的通信,共享内存是一种比较好的方式,一个进程把数据发送到共享内存中, 另一个进程可以读取改数据,简单记录一下代码 #define BUF_SIZE 256 TCHAR szNam ...

  2. URLClassLoader类

    URLClassLoader类 1.URLClassLoader类也是ClassLoader类的实现类,它的功能非常强大,他可以从本地文件系统中获取二进制文本来加载类,也可以从远程主机获取二进制文件来 ...

  3. thinkphp添加后台的构思以及添加数据功能

    先写个表单提交,这就是个简单的后台了...其实也可以通过phpadmin...phpadmin也叫后台的吧...一切都是为了更方便快捷... 先弄个模板,简单了点,就是为了了解实现的流程和原理 &lt ...

  4. Spring之SpringMVC&lpar;源码&rpar;启动初始化过程分析

    1.说明 SpringMVC作为Spring提供的MVC实现,可以实现与Spring的天然无缝联合,因为具有很广泛的用途.具体的关于SpringMVC的处理流程逻辑我在这里就不在赘述了.还是来通过源码 ...

  5. linux下 git 安装

    1.使用yum安装 yum -y install git yum remove git 2.源代码安装 a.下载git源码  网址为 https://github.com/git/git/releas ...

  6. centos 系统时间的同步

    1.当你的网站架构涉及到多台服务器的时候,服务器之间的时间必须得同步,这样就涉及到了程序的时间的准确性问题,特别是跟时间相关的操作和系统本身的定时任务. 2.时间同步工具:ntpdate,安装方式:y ...

  7. LeetCode算法题-Pascal&&num;39&semi;s Triangle(Java实现)

    这是悦乐书的第170次更新,第172篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第29题(顺位题号是118).给定非负整数numRows,生成Pascal三角形的第一个 ...

  8. EntityFrameworkCore概览

    .NET Core 中 EntityFrameworkCore的支持库主要有: Script-migration 级联删除 protected override void OnConfiguring( ...

  9. 使用python识别验证码

    公司的登录注册等操作有验证码,测试环境可以让开发屏蔽掉验证码,但是如果到线上的话就要想办法识别验证码或必过验证码了. 识别验证码主要分为三部分,一.对验证码进行二值化.二.将二值化后的图片分割.三.进 ...

  10. 个人作业2--APP案例分析

    产品 选择产品:酷狗音乐播放器 版本:Android版 选择理由:是我高中就开始用的音乐播放软件,在平时使用频率比较高,平时喜欢在累的时候听音乐放松. 调研 第一次上手体验 第一次使用的时候,感觉整个 ...