java基础教程传值_JSON入门教程-Pt.0: Java 中 B/S 的数据传递

B 就是 browser,浏览器,而 S 就是 server,服务器

这个系列的文章,将围绕两个问题来讲解:JSON 是什么?

为什么要学 JSON?

而在这研究两个问题之前,先研究 Java 中 浏览器端,也就是 JSP,与服务器端,也就是 Tomcat 的 Servlet 他们是如何进行数据传递的?

看下面的例子!

(如果很了解这个过程,可以草草看一下,或者直接跳过这个小节!)生活中最常见的一个业务逻辑就是用户登录验证

过程很简单:

获取前台输入账户和密码,传到服务器,和数据库中的账户密码验证,若数据库存在两个相匹配的字段,就是对上了就登录成功,否则登录失败

在这里,我们关注其中的几个问题:如何传前台的数据到服务器?

服务器又如何获取到前台的数据?

如何传服务器的数据到前台?

前台又如何获取到服务器的数据?

注:这里使用 JSP + Sevlet + IDEA 2018 研究

首先对于前台

稍微用 Bootstap 修饰了下,Jquery 是待会要用的,如下:

注:在 IDEA 中直接在包右键可以快速创建一个带模板 JSP

index.jsp:写个 form,然后两个 input,能登录提交即可:

若成功则跳转到 mainPage.jsp,这个就是简单的提示信息:

接着对于后台

我们写个简单的 servlet 然后在 web.xm 绑定以下即可(这里重点研究传值过程,不使用数据库,使用简单的 if 来验证!):

同样,在包右键即可快速创建一个 Servlet

web.xml 中绑定 Servlet:

最后,一个简单的,从前台到后台的,登录验证就好了,效果如下:

分析这个过程,回答上面的四个问题如何传前台的数据到服务器:通过 form 表单提交

服务器又如何获取到前台的数据:通过内置的 request 对象获取

如何传服务器的数据到前台:通过 session 对象 + 重定向

前台又如何获取到服务器的数据:通过 session 对象以及相应的 JSP 表达式

除了重定向,也可以用请求转发实现

有了上面那个实践的例子,使用方法都是类似的,现在简单罗列一下在 Java 中,数据传递的几种方式如下:

JSP 传递值给 Servlet

1.通过 form 表单提交JSP:建立一个 form 表单,给里面的元素加上 name 属性,表单提交的 action 等于一个 servlet 的 url-pattern

Servlet:建立一个 servlet,并在 servlet 里使用 request.getParameter("parameterName"); 即可获取到对应的参数

web.xml:给上面要传递的 servlet 匹配一个 url-pattern

2.通过元素的 href 属性JSP:有一些元素如 是带有 href 的属性的,可以指定值为 url-pattern?parameterName=xxx&parameterName=xxx ... 这样的形式来传递值给 Servlet

Servlet:建立一个 servlet,并在 servlet 里使用 request.getParameter("parameterName"); 即可获取到对应的参数

web.xml:给上面要传递的 servlet 匹配一个 url-pattern

3.通过 session 对象 session 结构可看作是 hashmap,而 session 的有效范围是项目所有的 servlet 和 jsp,生命周期大概 30min,也可以通过配置文件修改JSP:调用方式例如:

Servlet:建立一个 servlet,并在 servlet 里使用 (String)request.getSession().getAttribute("acc"); 即可获取到对应的参数 "jalr"

web.xml:给上面那个要传递的 servlet 匹配一个 url-pattern

注意:取得传过来的值上转型为 Object 类型,故要强制类型转换为原类型,否则 ClasscastExceptionServlet 传递值给 JSP

1.通过 RequestDispatcher 请求转发Servlet:在 doGet() 或 doPost() 中利用 request 对象以及请求转发到指定要取值的页面,注意路径问题!这里的路径需要在前面加 "/" ! request.setAttribute("acc", "jalr"); request.getRequestDispatcher("/index.jsp").forward(request, response); //跳转回 index.jsp

JSP:在任意需要值的地方用 ,如此取得 "jalr",同 session,上转型

web.xml:给上面那个要传递的 servlet 匹配一个 url-pattern

2.通过 sendRedirect 重定向 重定向使用 session 作为中间传递,注意路径问题!Servlet:在 doGet() 或 doPost() 中利用 response 对象以及请求转发到指定要取值的页面,注意路径问题!这里的路径不需要在前面加 "/" ! request.getSession().setAttribute("acc","jalr4ever"); response.sendRedirect("index.jsp");

JSP:在任意需要值的地方用 ,如此取得 "jalr",同理这个值是上转型为 Object 的,使用的时候需要强制转换类型下来

后记:

关于 sendRedirect-重定向 与 RequestDispatcher-请求转发 的区别请求转发前后页面共享一个 request ,这个是在服务端运行的,重定向前后页面用的不是一个 request,而这个是在客户端运行的

请求转发跳转后浏览器地址栏不会变化,重定向跳转后浏览器地址栏会变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值