【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据
在上一节的程序中,我们可以看到HttpServletRequest, HttpServletResponse这两个对象。可以说,这是JavaWeb中至关重要的两个对象。接下来,我们来做一个简短的说明:
1、HttpServletRequest
request对象(HttpServletRequest)代表客户端的请求,当客户端通过HTTP协议访问服务器
时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
让我们回顾刚才的过程,我们在浏览器的地址栏中输入http://localhost/wzry/login.do,那么我们就是给服务器发起了一个请求login.do。就是web.xml中配置的url-pattern,随便你写什么,不是非得要“xxx.do”。

其中,请求头就是Request Headers. 我们还可以看到请求的方式是Get方式,通过浏览器地址栏的方式就是GET方式。现在,我们改变在请求的同时加入一点信息:
http://localhost/wzry/login.do?username=admin&password=123&type=weixin
在请求地址后面加一个 ?,开始拼接数据,每一个数据都是key=value 的形式,不同数据之间用 & 连接。再次回车。我们可以看到信息发生了变化:

不论你是什么请求,你往服务器传递的数据只能是 字符串!
现在,我们可以在Servlet中接收这些参数!

运行结果:

正常情况下,为了保存这些数据,我们都会各自建立一个Java类,比如用户类。我们为了方便起见,可以采用一种公用的数据结构来保存,那就是Map。从道理上也能明白吧,客户端传递数据到我们的服务器,我们是不是首先得想办法把它存起来?好像给你一筐鸡蛋,然后他说,鸡蛋给你,框子我得拿走,那么你是不是得找一个容器,把鸡蛋装起来呢?不就是这个道理嘛。
Map就是这么一个容器。
修改后的代码:

在实际的开发中,传进来的数据肯定是不一样的,如果我们太依赖于getParameter这个方法,就无法做到灵活变通。那么有没有一种通用的方法,让request对象中附带的数据自动转换为Map呢?
我已经封装好了一个工具类,里面就有这样的方法。

这里用到了枚举,实现细节我们不去讨论,现在用这个代码来进行一把骚操作。
静态导入这个工具类:
import static com.wzry.util.WebUtil.*;
直接调用转换的方法:

爽不?
2、HttpServletResponse
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象(HttpServletRequest)、和代表响应的response对象(HttpServletResponse)。
request和response对象即代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。
在刚才的例子中,我们添加以下代码:

页面效果:

我们通过这种方式,就可以往客户端发送一个数据。
刚才讲了GET方式提交可以直接在浏览器地址栏操作,GET方式提交的缺点就是会暴露自己的数据信息,还有一种POST提交的方式。相比GET方式要安全一点,它不会直接暴露数据。现在我们通过form表单来做一个讲解。
在WebContent目录下新建一个index.jsp。
编写form表单:

用户名和密码都有对应的id:


为了项目的严谨性,防止用户通过抓包的方式手动提交,从而绕过JS验证,我们一般还需要在后台也进行一个验证。

为了方便起见,我们先把js验证给去掉。

我们故意不填写用户名和密码,点击登录按钮,结果并没有什么卵用。因为其实传递到后台是有值的,只是为””,这一点和js不同,在Java中,””不等于假,它只是代表一个空字符串。所以我们需要修改一下验证条件。还有,为了不让代码继续往下执行,我们需要及时return。

为了给用户返回错误信息,我们得把信息抛到页面上。

关注一下,这里有两个重复点,于是考虑封装。


再来一个通用的把数据返回给前台的方法:


【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据的更多相关文章
- 【Java框架型项目从入门到装逼】第一节 - Spring框架 IOC的丧心病狂解说
大家好,好久不见,今天我们来一起学习一下关于Spring框架的IOC技术. 控制反转--Spring通过一种称作控制反转(IoC)的技术促进了松耦合.当应用了IoC,一个对象依赖的其它对象会通过被动的 ...
- 【Java框架型项目从入门到装逼】第九节 - 数据库建表和CRUD操作
1.新建学生表 这节课我们来把和数据库以及jdbc相关的内容完成,首先,进行数据库建表.数据库呢,我们采用MySQL数据库,我们可以通过navcat之类的管理工具来轻松建表. 首先,我们得建一个数据库 ...
- 【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?
继续上一节的内容,多几个jar包: aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的O ...
- 【Java框架型项目从入门到装逼】第十三节 用户新增功能完结篇
这一节,我们把用户新增的功能继续做一个完善.首先,新增成功后,需要给前台返回一个信息,就是告诉浏览器,这次用户新增的操作到底是成功了呢,还是失败了呢?为此,我们需要专门引入一个结果类,里面只有两个属性 ...
- 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建
本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单. 1.新建项目 首先,打开eclipse,新建一个web项目. ...
- 【Java框架型项目从入门到装逼】第十二节 项目分层
这一节我们开始对项目进行分层,一般来说,一个web项目的层次结构如下图所示: controller层为我们的控制层,用来接收用户的请求,比如新增一个学生的信息,新增的请求最先就是走到这一层.contr ...
- 【Java框架型项目从入门到装逼】第三节 - 如何用Tomcat发布web项目?
啥叫Tomcat?有道词典是这么说的. 这个我们姑且不管,实际上呢,Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务器呢,又分为硬件服务器和软件服务器. ...
- 【Java框架型项目从入门到装逼】第四节 - 编写第一个Servlet程序
在开始这一节之前呢,我们还需要把Tomcat配置到Eclipse中,配置的方式很简单,打开Eclipse,Window,Preferences,进入到这个页面: 将Tomcat的安装目录配置到Ecli ...
- 【Java框架型项目从入门到装逼】第十四节 查询用户列表展现到页面
这一节,我们来实现一下用户列表搜索,最终的效果如下: 这边我们要使用easyUI给我们提供的datagrid组件. HTML结构如下 <!-- 数据列表 --> <table id= ...
随机推荐
- 利用vmware搭建分布式集群
背景: 我们需要至少3台服务器来实现分布式,鉴于没那么多钱买真机器,从学习和开发的角度看,只有虚拟机一条路了. 软件选择: 虚拟机使用VMware软件,因为主流而且资料比较多,学习成 ...
- ZED-Board从入门到精通系列(八)——Vivado HLS实现FIR滤波器
http://www.tuicool.com/articles/eQ7nEn 最终到了HLS部分.HLS是High Level Synthesis的缩写,是一种能够将高级程序设计语言C,C++.Sys ...
- Oracle442个应用场景-----------角色管理
--------------------------------角色管理------------------------------------ 一.角色的概念和特性 1.什么是角色? 角色就是相关权 ...
- 腾讯qq等级计算公式面试题
就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3) a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...
- 【LeetCode-面试算法经典-Java实现】【053-Maximum Subarray(最大子数组和)】
[053-Maximum Subarray(最大子数组和)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Find the contiguous subarray w ...
- All-In-One方式-安装openstack
ALL-IN-ONE安装openstack******************************************************************************* ...
- 大数据学习(7)Hadoop高可用
HDFS高可用 通过主从切换实现单NameNode高可用.通过Federation:水平扩展来联合多NameNode个: NameNode高可用 把edits日志从原来的nameNode中分离出来,存 ...
- lock锁速记
1.Lock关键字主要实现锁互斥,确保一个线程A在请求此操作时不会被其线程B请求中断(假设A先请求并在没有未完成的操作情况下申请了此互斥锁).lock的参数必须是基于引用类型的对象,不要是基本类型像b ...
- IntelliJ Idea设置护眼浅绿色背景方法
老版本的设置位置 新版本的设置位置不一样(下图新版本为2017.5.4)的设置位置
- 关于postgres中的一些宏的tips
Postgresql作为C语言开发的代码,其中大量的运用了一些宏的操作. 因此理解这些宏很重要,然而有时候这些宏总让人很费解. 作为一个经常翻翻postgresql源码的小白,在这里做一个记录吧,方便 ...