java - 如何管理登录用户页面标题

标签 java jsp servlets

Java servlet 中如何管理堆栈溢出 header 之类的内容?如果您已登录,标题会与未登录时不同,但您仍然可以搜索和使用该网站。

我目前正在通过单个 servlet 将请求分派(dispatch)到我的各种请求处理程序,这些请求处理程序又转发到 JSP;我是否必须在每个请求处理程序中实现逻辑,设置一个属性来指示用户是否登录,然后设置一个 if else JSTL JSP 中的 block 什么的?有什么方法可以在 Controller servlet 中管理它吗?

我见过的用于管理登录用户的所有模式似乎都诉诸于重定向到登录/注册页面,但我不希望有一个全有或全无的系统强制用户登录才能使用该网站,而只是一个不同的 header ,例如堆栈溢出。

最佳答案

首先你需要一个地方来存储用户信息,我会设置一个数据库并使用像 Hibernate 这样的东西。然后你需要一种方法来使用该信息来指定用户并允许登录,我会推荐 Spring Security。我个人最喜欢的获取这两个框架的教程/指南的网站是 Mkyong。这是关于 Spring Security 的一个 http://www.mkyong.com/spring-security/spring-security-hello-world-example/

这是从我参与的项目中获取经过身份验证的用户的代码示例,此示例有一个从数据库检索的用户对象。

public static User currentUser() {
    if (SecurityContextHolder.getContext() != null && 
            SecurityContextHolder.getContext().getAuthentication() != null && 
            SecurityContextHolder.getContext().getAuthentication().getPrincipal() != null &&
            SecurityContextHolder.getContext().getAuthentication().getPrincipal() instanceof User) {
        //logger.debug(className, "currentUser", "User: " + SecurityContextHolder.getContext().getAuthentication().getPrincipal());
        return (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    } else {
        return null;
    }
}  

在 Jsp 中它会读到这样的内容

<c:if test="${esFn:currentUser() not null}">Your logged in!!!</c:if>

esFn是一个在functions.tld中定义的函数,如下所示

<function>
    <name>currentUser</name>
    <function-class>com.test.User</function-class>
    <function-signature>
        com.test.User currentUser()
    </function-signature>
</function>

关于java - 如何管理登录用户页面标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769062/

相关文章:

java - 如何跨目录读取类路径中的文本文件?

javascript - 在通过 AJAX 将数据发送到资源之前验证表单。 Liferay 7.3.5

java - 处理 JSP Session 的问题

java - 当值在java/servlets中有空格时读取复选框的值

java - 设置蒲公英数据表中的可见行数

java - 如何将文件从 Java servlet 上传到 Tomcat/webapps 中 Web 服务器上的某个位置

java - 小服务程序 : overwrite existing cookie

java - 我可以在Java中使用char进行计算吗

java - Java 中的线程安全或多线程 CRF 支持连续变量?

java - Maven 构建配置文件在子模块 pom 定义属性时执行