在JS中访问JSP Request中的变量

有时希望Jsp实现显示,Js实现前台的逻辑控制,在这个过程中,JsJsp之间会需要交互一些变量值,Jsp的页面跳转也可以通过Js来控制。看下面一个例子:

      登录 -> 检查用户名和密码 -> 欢迎页

包含的文件如下:

登录页面:Login.jspLogin.js

欢迎界面:Welcome.jspWelcome.js


Login.jsp

<script type=”text/javascript” src=”Login.js”></script>

…..//省略部分代码

<form action="home.jsp" method="post">

<table>

       <tbody>

              <tr>

                     <td>UserName:</td>

                     <td><input type="text"  name="username"/></td>

              </tr>

              <tr>

                     <td>Password:</td>

                     <td><input type="text"  name="password"/></td>

              </tr>

              <tr>

                     <td><input type="submit" onclick="doLogin()" value="Login"/></td>

                     <td align="center"><button onclick="doClear()">cancel</button></td>

              </tr>

       </tbody>

       </table>

</form>

 

上面代码中,使用一个表单,发送用户名和密码给后台验证,是通过Js调用业务方法。具体看下面的Js文件。这边Jsp传递的参数,可以在后面的welcome.jsp页面中获取。


Login.js

// doLogin()方法主要是调用业务层的方法判断用户名和密码是否存在,可以登录

function doLogin(){

       var userDto = new Object();

       userDto.name = document.getElementById('username').value;

       userDto.password = document.getElementById('password').value;

       userServiceDwr.login(userDto,{callback:handleLogin,errorHandler:handleLoginError});//此处是调用DWR去后台数据库判断用户是否存在,这边可以是任何的业务逻辑方法。

}

function handleLogin(result){

       if(result){

              window.location.href="Welcome.jsp"; //登录成功后跳转到欢迎页

       } else {

              document.getElementById('errorMsg').innerHTML = 'login failed,please check the username and password.';

       }

}

function doClear(){

       document.getElementById('username').value='';

       document.getElementById('password').value='';

}

function handleLoginError(){}

 

Welcome.jsp

<script>

       function getUserName(){

              var username = '<%=request.getParameter("username")%>';

              alert(username); //弹出框显示Login.jsp中传来的username

}

</script>

<div class="content">

       <div id="welcomeDiv" style="padding-top:30px;">

              <div>welcome <%= request.getParameter("username") %></div>

              <button onclick="getUserName()">click here to get user name.</button>

       </div>

</div>

 

上面的代码,在JS代码片段中,通过<%=request.getParameter("username")%> 访问了Login.jsp中表单传递过来的username属性的值,这样的操作上没有问题的。如果想要把getUserName()方法放在一个单独的Js中,如Welcome.js,也就是不在Jsp文件中插入Js代码。用普通的<script type=”text/javascript” src=” Welcome.js”></script>方式引入JS文件是无法访问,代码如下:


<script type=”text/javascript” src=”Welcome.js”></script>

…..//省略部分代码

 

<div class="content">

       <div id="welcomeDiv" style="padding-top:30px;">

              <div>welcome <%= request.getParameter("username") %></div>

              <button onclick="getUserName()">click here to get user name.</button>

       </div>

</div>

 

Alert弹出的内容是:'<%=request.getParameter("username")%>',也就是说把上面这段代码当成了字符串,没有解析它。要想让单独的Js文件中的方法也能解析出'<%=request.getParameter("username")%>',需要换一种JS的引入方法,代码如下

<script type="text/javascript" > <%@ include file=".Welcome.js"%> </script>

…..//省略部分代码

 

<div class="content">

       <div id="welcomeDiv" style="padding-top:30px;">

              <div>welcome <%= request.getParameter("username") %></div>

              <button onclick="getUserName()">click here to get user name.</button>

       </div>

</div>

用上面这种方式,点击Button弹出来的内容就是Login.jsp中传过来的username的值。

 

Welcome.js

function getUserName(){

       var username = '<%=request.getParameter("username")%>';

       alert(username);

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值