JavaWeb资源间数据的传递总结

一. js与jsp之间的数据传递

(一). jsp获得js的值

因为jsp本质上是servlet,在服务器中运行。所以无法直接获取js的值。
需要先把客户端的变量提交给服务器,服务器中再接收该变量。

在一个jsp页面中:
(1)在jsp中设置表单,或节点(隐藏/不隐藏)

	<form id="jsp_form" action="#" method="post">
             <input id="jspEle" type="hidden name="jspEle">
    </form>

(2)js代码中,提交表单

   <script>
    function setElevalue(){
        var tmp = "jsEle";
        document.getElementById("jspEle").value = tmp;  // 将JS变量值存储到jsp的控件中
  	}
  	function submit(){
    	var jsp_form = document.getElementById("jsp_form"); // 获取表单
    	jsp_form.submit(); // 对表单进行提交
    }
   </script>

(3)表单提交后,在jsp中设置值。这时就获得了js中的变量值

<%
    String jsP_js = request.getParameter("jspEle"); // jspEle为隐藏控件名
%>

(二). js获得jsp的值

可以借助服务器中的变量,如request。

<%
	 int num = 5;
	 request.setAttribute("num", num);
 %>
var num =  <%= request.getAttribute("num") %>; //5
num  = ${requestScope.num}; //5

二. jsp与servlet之间的数据传递

(一)jsp数据传入servlet

1.方式1: 异步请求
使用ajax,发送异步请求,将数据传入servlet。
(异步请求时,也可以把参数写在url中)

$.post("ajaxServlet",{username:"jack"},function(data){
	 alert(data);
 },"text"); //type不设置时,默认为智能判断

提交表单时,可以将表单序列化提交
例: 提交登录表单

$("#login_form").submit(function () {
	//发送异步请求
	$.post("userServlet", $(this).serialize(), function (data){
	
	}) 
})

2.方式2: 直接提交表单,为表单设置action

<form id="regist_form" method="post" action="userServlet" >
	<input id="rname"  type="text" name="uname" placeholder="用户名" ">
    <input id="rpassword"  type="password" name="password" placeholder="密码" />
    <input id="rsubmit" type="submit" value="注册"/>                                
</form>

(二)servlet数据传入jsp

1.方式1: 将变量存入域中
如: 存入session,cookie。

	request.getSession.setAttribute("user",user);

也可以存入request,然后进行转发,访问jsp

request.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);

2.方式2: 在异步请求中,返回数据
注意: 返回数据类型要与异步请求预设的数据类型相同
例.返回json数据:

	ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(user);
    response.setContentType("application/json;charset=utf-8");
    response.getWriter().write(json);

(三)jsp处理servlet传入的数据

1.对于request,session中存储的值,直接获取即可

	User user = (User)request.getAttribute("user");

2.`异步请求中返回的数据
直接通过返回的数据data,获取即可。对于json类型数据,使用获取json数据的方法。

(四)servlet处理jsp传入的数据

1.异步请求传入的参数

	String id = request.getParameter("id");

对于提交表单的异步请求:
可以使用BeanUtils工具类,将其封装到一个对象中(注意: 表单的name要与对象中变量名相同)

	//获取参数
    Map<String, String[]> map = request.getParameterMap();
    //封装参数
    User registUser = new User();
    try {
    	BeanUtils.populate(registUser, map);
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
         e.printStackTrace();
   }

2.在url中设置的参数

	String params = request.getQueryString();

补充: 接收数据时的中文乱码问题,可以通过该语句解决:
(常常是页面中用户输入的数据)

String title = request.getParameter("title");
title = new String(title.getBytes("iso-8859-1"),"utf-8");//当然UTF-8可以换成GBK,unicode

三. jsp与jsp之间的数据传递

可以使用location.href,来完成jsp与jsp之间的跳转。在url中传递参数。
例:

	location.href = "index.jsp?id="+ 1 +"";
	//在index.jsp中
	var id = ${param.id};

四. html与servlet之间的数据传递

(一) html数据传入servlet

1.方式1: 使用a标签的href
格式: 在超链接通过?+要传的属性名=属性值 ,多个属性需要用&连接
注意: 不要在a标签的访问URL前面加/,否则无法找到资源

	<a href="userServlet?username=jack&password=123"></a>

2.方式2: 使用ajax(jsp与servlet数据交互处已说明)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白与空

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值