专栏首页web编程技术分享【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据

【Java框架型项目从入门到装逼】第五节 - 在Servlet中接收和返回数据

在上一节的程序中,我们可以看到HttpServletRequest, HttpServletResponse这两个对象。可以说,这是JavaWeb中至关重要的两个对象。接下来,我们来做一个简短的说明:

1、HttpServletRequest

request对象(HttpServletRequest)代表客户端的请求,当客户端通过HTTP协议访问服务器 时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

让我们回顾刚才的过程,我们在浏览器的地址栏中输入http://localhost/wzry/login.do,那么我们就是给服务器发起了一个请求login.do。就是web.xml中配置的url-pattern,随便你写什么,不是非得要“xxx.do”。

image.png

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

image.png

不论你是什么请求,你往服务器传递的数据只能是 字符串!

现在,我们可以在Servlet中接收这些参数!

image.png

运行结果:

image.png

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

Map就是这么一个容器。 修改后的代码:

image.png

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

我已经封装好了一个工具类,里面就有这样的方法。

image.png

这里用到了枚举,实现细节我们不去讨论,现在用这个代码来进行一把骚操作。 静态导入这个工具类:

import static com.wzry.util.WebUtil.*;

直接调用转换的方法:

image.png

爽不?

2、HttpServletResponse

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

在刚才的例子中,我们添加以下代码:

image.png

页面效果:

image.png

我们通过这种方式,就可以往客户端发送一个数据。

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

编写form表单:

image.png

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

image.png

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

image.png

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

image.png

image.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从啥也不会到可以胜任最基本的JavaWeb工作,推荐给新人的学习路线(二)

    剽悍一小兔
  • 【PHP快速入门】 第一节 php开发环境的配置

    这是一个简单,而且免费的PHP教程。 第一节,说一说如何安装PHP的开发环境。为了方便起见,可以直接安装xampp即可。 首先,去百度上搜索xampp,随便...

    剽悍一小兔
  • Tomcat的安装配置与JavaWeb入门教程

    剽悍一小兔
  • 组和分组卷积

    考虑一个正方形。它是对称的吗?它是如何对称的?它有多少对称性?它有什么样的对称性?

    abtion
  • 在window服务器上搭建一个webftp工具,实现移动存储

    通常对于服务器上的文件管理和数据传输都是利用ftp来实现,但随着存储技术的发展,数据资产的存储规模和复杂程度不断提高,传统的ftp传输显得有笨重。今天给大家介绍...

    之至top
  • VMvare Workstion 12上的虚拟主机迁移到 Exsi6.0

    我在自己的电脑上做测试部署了一台服务器,server2012,为了避免在生产环境中再搭一边 所以通过迁移操作直接将Worstion上的主机 迁移到 Esxi6....

    迅达集团
  • 李成熙 :云开发——小程序后台服务开发最佳实践

    我本人是在2014年的时候加入腾讯,主要做过有像QQ,小程序也做过一些,如腾讯文档的小程序。现在主要负责小程序·云开发。

    云加社区技术沙龙
  • grafana 查询count

    用户5760343
  • Netty-ServerBootstrapAcceptor

    注册一个Acceptor事件处理器到mainReactor中,Acceptor事件处理器所关注的事件是ACCEPT事件,这样mainReactor会监听客户端向...

    乐事
  • VMWare安装Linux操作系统CentOS

    上篇文章我们介绍了如何在Windows操作系统中安装VMWare软件,并创建一个虚拟机,链接地址:http://www.jianshu.com/p/6b589e...

    Albert陈凯

扫码关注云+社区

领取腾讯云代金券