JSP字符串到Java类

时间:2017-09-15 13:07:17

标签: java jsp

我有一个jsp页面。页面以字符串形式显示请求的字段。

<% String token = ""+request.getParameter(); %>

在这个jsp页面中还有一个测试类。

 <%!
      public static String usetoken()
          {
              String testtoken = ""+token;
          }

 %>

这个usetoken类无法解析令牌字符串。我怎么解决这个问题?我需要在一个jsp页面内的类中调用一个字符串。

谢谢,

1 个答案:

答案 0 :(得分:1)

首先,您可能知道,jsp将被编译为servlet。所有scriptlet代码都将“插入”到service()方法中,所有声明都将插入到servlet类中。所以,对于你的情况,我们会有类似的东西(简化):

public class FooServlet extends HttpServlet {

    public static String useToken() {
        String testtoken = ""+ token;
        return testtoken;
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String token = ""+ request.getParameter();
    }
}

如您所见,userToken()方法无法知道service()方法中的'token'局部变量。

此外,您无法在jsp声明中访问HttpServletRequest,因为它是service()方法的参数。

<强> BUT

你可以使用JSTL这样的东西。您可以声明变量:

<c:set var="token" value="${requestScope.token}"/>

使用表达式语言(EL)访问jsp中的任何位置:

${token}

<小时/> 如果您不知道,请在jsp considered bad practice中编写scriptlet。你需要在外面的某个地方做业务逻辑并提供jsp视图。因此,请使用JSTL,您的自定义标签和EL。