从Servlet到jsp的传值问题

从Servlet到jsp的传值问题

在项目维护中,经常出现各种参数在传递的时候丢失的现象。有个多莫名其妙的版本问题,因此需要用多种方式传递参数。

1. 通过域对象传值,通过EL表达式,ognl表达式等方式拿到

不管是struts还是springMVC还是原生的Servlet都能拿到四大域对象。通常的使用方式是在java代码中放置,再在jsp中拿到。
//用request域来测试
private String username = User.getUsername();
request.setAttribute("username",username);
//在jsp中就能通过EL表达式拿到
<input type="hidden" value="${requestScope.username}"/>
但是在很多维护性的项目中由于版本过低不能使用EL表达式,这时候就需要看项目中所用的框架了。如果是webwork,struts等有框架自带的方式,就通过框架自带的方式传递。
经验告诉我既然是提出来的bug,所以项目本身用的传值方式大多数是行不通。这时候可以用脚本传递值。

2. 通过域对象传值,jsp脚本拿到

//用request域来测试
private String username = User.getUsername();
request.setAttribute("username",username);
<%
    String username = request.getAttribute("username");
%>
<script type="text/javascript"> 
    var username = "<%=username %>";
</script >

3.通过访问路径在后面拼接传值

//在java代码中通过重定向。重定向的好处是可以清除request域对象中的值。
url = "http://" + (request).getServerName() + ":"
        + (request).getServerPort()
        + (request).getContextPath()
        + "/pages/plantform/plantform.jsp?"+username;
response.sendRedirect(url);
<script type="text/javascript"> 
$(function(){
if(username == ""){
   var url_username = window.location.href.split("?");
    if(url_username[0].lastIndexOf(".jsp")){
        username = url_username[1];
    }
}
});
</script >

通过json对象或者json字符串传值

通过json传值在SpringMVC和struts2中有封装。配置好就能随心所欲的传值,但是在维护中如果不能传值,就用原始的方法。

String resultData = DemoServiceImpl.findResultData();
//在Servlet中
PrintWriter printWriter = getResponse().getWriter();
printWriter.write(resultData);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值