2017-09-15 69 views
0

我有一个jsp页面。页面有一个请求的字段作为字符串。JSP字符串到Java类

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

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

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

%> 

此usetoken类不能解决令牌字符串。我该如何解决这个问题?我需要在一个jsp页面内的类中调用一个字符串。

谢谢,

+0

我希望这对你有用https://stackoverflow.com/questions/33183108/how-to-print-a-java-string-in-a-jsp-file – ottis79

+0

@ ottis79不,它不是。请认真阅读。我可以这样使用。但我无法将标记字符串插入到类中。 – Emin

+0

'token'是一个局部变量,不存在于定义的上下文中(即'<%! ... %>'区块内) –

回答

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()方法的局部变量。

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

您可以使用JSTL这样的事情。使用表达式语言(EL)在你的JSP中的任何地方

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

,并获得:您可以声明变量

${token} 


如果你不知道,写你的JSP considered bad practice内部小脚本。你需要在外面的某个地方做业务逻辑,并提供视图为jsp。所以使用JSTL,您的自定义标签和EL。