让我给你一个关于系统如何工作的想法。
我使用JAAS登录模块进行登录和角色管理。我可以根据我的角色访问特定页面。
我在地址栏中输入我的url,点击回车键。
登录页面出现,正确登录后,它会将我重定向到正确的页面(现在我们称之为page1.jsf)。
我想在页面加载时调用服务器端方法。
你能帮我吗?
**编辑**
假设我必须访问第1页。jsf,仅角色1可访问。
在地址栏中,我输入http://localhost:8080/myapp/page1.jsf
JAAS显示登录页面,正确输入凭证后,我被重定向到第1页。jsf
第一页。jsf被请求或在页面加载时,我想从我的类中调用一个服务器端方法来重新加载page1。jsf
是的,这很有效。您也可以访问servlet,而不是访问jsp或jsf页面。所以创建一个新的servlet。例如。:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TestServlet
*/
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public static void yourMethod() {
// do something useful
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
yourMethod();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
然后在网上创建一个新条目。xml文件,以便将Servlet映射到/。
<servlet>
<display-name>TestServlet</display-name>
<servlet-name>TestServlet</servlet-name>
<servlet-class>your.packages.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
之后,您应该能够调用localhost:8080/TestServlet
,然后调用您的方法。
如果您使用的是JSF 2,那么可以使用上面的页面片段:
<html xmlns="http://www.w3.org/1999/xhtml"
... >
<f:view contentType="text/html">
<f:event type="preRenderView" listener="#{permissionManager.checkRoles}" />
<f:attribute name="roles" value="ROLE" />
...
</f:view>
</html>
您可以添加一个包含角色的属性,并在PermissionManager.checkRoles()
中执行重定向到corret页面。
@Named
@ApplicationScoped
class PermissionManager {
...
public void checkRoles(ComponentSystemEvent event) {
String acl = "" + event.getComponent().getAttributes().get("roles");
//Check user role
...
//Redirect if required
try {
ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) context
.getApplication().getNavigationHandler();
handler.performNavigation("access-denied");
} catch (Exception e) {
...
}
}
}
看看这个例子,看看这个相关的问题
PrimeFaces 5.0、JSF 2.2、Glassfish 4.1.1、, 我假设我的设置中有些东西没有正确配置,但我不确定该看什么。。。 所以我使用managedbeans来支持JSF页面。在页面上的PrimeFace元素中,如果我使用oncomplete属性,它引用的方法将在页面加载时被调用。我不想让它在每次加载页面时调用这个方法,我也不认为应该这样! 我已经在几页和不同的元素中对此进行
我想在加载aboutme时调用servlet GetUserData。jsp页面。 基本上,它所做的是设置一个会话变量,允许用户查看其配置文件信息。 它设置了一个会话变量,因此它不需要调用任何东西,只需在页面加载时继续使用servlet。 这个servlet调用另一种方法来生成SQL语句并准备要发送的数据。 最后,在JSP页面上,我想使用先前声明的会话变量将所有信息(如登录名、密码等)打印到表中。
问题内容: 我正在将React与Firebase一起使用来开发一个小型Web应用程序。为了进行身份验证,我使用了上下文API,并且在上下文中添加了登录用户的详细信息。 AuthProvider.tsx AuthConsumer.tsx PrivateRoute.tsx App.tsx 用户已经登录,并且会话持久性设置为本地。问题是,当我尝试本地主机/订阅(这是一条私有路由)时,context.is
我试图从一个网页中以乐透模拟机的形式接收一组数字。我运行服务器,通过浏览器中的本地主机打开页面,输入数字并提交,但下一页上没有显示任何内容,甚至没有404错误。可能是地图问题,但我迷路了。有什么想法吗? 我otto.class 指数html 网状物xml 这三个文件具有以下目录: 大乐透WEB-Lotto\WEB-classes\tomcat.5\webcat.5。班 index.htmlZ:\a
我使用python编写了一个简单的超文本传输协议Web服务器,但我注意到当我连接到它时,html页面出现在浏览器窗口中,但chrome选项卡中的指示器继续旋转,服务器收到空字符串。这种情况一直持续到我单击“X”停止加载页面。有人能解释为什么会发生这种情况以及如何解决这个问题吗?此外,如果超文本传输协议标头错误或我错过了重要的标头,请告诉我。我发现很难找到有关超文本传输协议标头和命令的信息。 您可以
是否有一种方法可以在webview上加载html页面而不使用web服务器? 在我的android应用程序中,我有一个web服务器,因为用户可以保存他想要的网页,然后可以脱机访问它们。 url可以是: http://stackoverflow.com 或