Java 如何从jsp中的struts2标记调用预定义方法

Java 如何从jsp中的struts2标记调用预定义方法,java,google-app-engine,struts2,Java,Google App Engine,Struts2,我想使用struts标记在jsp中为UserService(应用引擎用户服务)类创建一个对象,并调用它的createLoginURL(req.getRequestURI())方法 我怎么做?非常感谢您的帮助 提前感谢大家。这些都应该在操作(或实用程序类)中处理,而不是在JSP中处理 在操作中获取UserService的实例。操作应该实现,因为它需要对请求调用一个方法(通常不鼓励这样做,因为它将操作绑定到servlet规范) 将userService.createLoginURL(req.getR

我想使用struts标记在jsp中为UserService(应用引擎用户服务)类创建一个对象,并调用它的createLoginURL(req.getRequestURI())方法

我怎么做?非常感谢您的帮助


提前感谢大家。

这些都应该在操作(或实用程序类)中处理,而不是在JSP中处理

在操作中获取
UserService
的实例。操作应该实现,因为它需要对请求调用一个方法(通常不鼓励这样做,因为它将操作绑定到servlet规范)

userService.createLoginURL(req.getRequestURI())
方法的结果保存为操作属性,并在JSP中呈现


JSP中唯一应该发生的事情是将该字符串呈现为链接。

我是否应该创建一个自定义标记库并使用JSP中的自定义标记调用适当的方法?您好@DaveNewton,感谢您宝贵的回复。我可以这样做,但是在jsp中有什么方法可以做到这一点吗?我之所以问这个问题,是因为在第一个页面,即索引页面中,我必须生成一个指向登录页面的链接。@KrishnaChaitanya您可以用完全相同的方式来做,但是在JSP中。但是在S2应用程序中,你真的不应该看到任何JSP页面;任何欢迎页面都应该重定向到操作,或者容器应该配置为允许非文件/servlet资源作为欢迎文件(不知道在GAE中是否可能)。我不理解。你能详细告诉我吗?谢谢你advance@KrishnaChaitanya很难说得太详细了——我给了你要遵循的确切步骤;除了不需要实现
ServletRequestAware
,因为您可以直接访问请求之外,其他步骤与scriptlet中的步骤完全相同。它只针对一个页面——将其制作成一个标签是毫无意义的。好吧,我会照你说的做。我的想法是创建一个index.jsp页面,其中有一个链接“login here”。这将执行一个操作。在该操作中,我将使用
request.sendredirect(createLoginURL(request.getRequestURI())
方法再次重定向用户。但是我不明白“你不需要实现
ServletRequestAware
。那么我怎么才能获得请求uri呢?