相关疑难解决方法(0)

servlet如何工作?实例化,会话,共享变量和多线程

假设,我有一个拥有大量servlet的Web服务器.对于在这些servlet之间传递的信息,我正在设置会话和实例变量.

现在,如果有2个或更多用户向此服务器发送请求,那么会话变量会发生什么?它们对所有用户都是通用的,或者对于每个用户而言都是不同的.如果它们不同,那么服务器如何区分不同的用户?

还有一个类似的问题,如果有n用户访问特定的servlet,那么这个servlet只在第一个用户第一次访问它时实例化,或者是否为所有用户单独实例化?换句话说,实例变量会发生什么?

java multithreading servlets session-variables instance-variables

1105
推荐指数
6
解决办法
28万
查看次数

当用户登录Web应用程序时,如何实现"保持登录状态"

在大多数网站上,当用户即将提供登录系统的用户名和密码时,会出现一个"保持登录状态"的复选框.如果选中该复选框,它将使您在同一Web浏览器的所有会话中登录.如何在Java EE中实现相同的功能?

我正在使用基于FORM的容器管理身份验证和JSF登录页面.

<security-constraint>
    <display-name>Student</display-name>
    <web-resource-collection>
        <web-resource-name>CentralFeed</web-resource-name>
        <description/>
        <url-pattern>/CentralFeed.jsf</url-pattern>
    </web-resource-collection>        
    <auth-constraint>
        <description/>
        <role-name>STUDENT</role-name>
        <role-name>ADMINISTRATOR</role-name>
    </auth-constraint>
</security-constraint>
 <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>jdbc-realm-scholar</realm-name>
    <form-login-config>
        <form-login-page>/index.jsf</form-login-page>
        <form-error-page>/LoginError.jsf</form-error-page>
    </form-login-config>
</login-config>
<security-role>
    <description>Admin who has ultimate power over everything</description>
    <role-name>ADMINISTRATOR</role-name>
</security-role>    
<security-role>
    <description>Participants of the social networking Bridgeye.com</description>
    <role-name>STUDENT</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)

forms-authentication java-ee stay-logged-in

53
推荐指数
2
解决办法
4万
查看次数

如何在Java Web应用程序中将会话过期时重定向到"登录"页面?

我正在JBoss AS 5中运行一个Web应用程序.我还有一个servlet过滤器,它拦截了对服务器的所有请求.现在,如果会话已过期,我想将用户重定向到登录页面.我需要执行此操作'isSessionExpired()'检查过滤器并需要相应地重定向用户.我该怎么做?我在web.xml中设置会话时间限制,如下所示:

<session-config>
    <session-timeout>15</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

java servlets login servlet-filters

45
推荐指数
5
解决办法
19万
查看次数

会话丢失并在每个servlet请求中创建为新的

我有这个大问题.每次我向服务器发出新请求时,我当前的会话都会消失.

我检查了很多地方.我找不到问题所在.我还在tomcat和application中都包含了web.xml中的session-config.我还启用了接受我的浏览器的cookie.在每个浏览器中测试.它不起作用.

我只是使用JSP/Servlet开发一个简单的java ee applcation.我在服务器机器中部署到tomcat之后才遇到问题.

java session tomcat servlets

36
推荐指数
5
解决办法
7万
查看次数

使用Java中的过滤器验证用户名,密码(与数据库联系)

以下是使用过滤器的Java代码片段,如果用户名和密码也正确,则每次都会显示错误页面.请帮帮我,我对这个概念知之甚少.

String sql="select * from reg where username='"+user+"' and pass='"+pwd+"'";
rs=st.executeQuery(sql);
if(rs.next())
{
    chain.doFilter(request,response);
}
else
    sc.getRequestDispatcher("/error.html").forward(request,response);
Run Code Online (Sandbox Code Playgroud)

authentication jsp servlets login servlet-filters

10
推荐指数
2
解决办法
2万
查看次数

用Google登录-如何注销?

我已使用Google提供的示例代码成功实现了与Google的登录。

但是,我不确定应该如何使用此“后端服务器身份验证”。

该文件位于:https : //developers.google.com/identity/sign-in/web/backend-auth

我正在开发一个需要google登录名和google drive的网站,因为程序在运行:

  1. 用户使用Google帐户登录网站
  2. 用户写一些文字
  3. 用户保存(上传)到用户的Google驱动器

在实现google drive API之前,我认为我需要使用google登录系统,但是我不确定该怎么做。

目前,我的网站为1.用户登录/ 2.用户注销/ 3.然后网络不询问google帐户,而只是在其中登录前一个用户。

“后端服务器身份验证”是否可以回答以下我的问题?

我了解这是与此相同的问题:如何注销使用OAuth2登录Google的应用程序?。我理解了答案的含义,但是我无法找到一种方法来实现“仅从应用程序而不是Google登出”。

总结一下,我的问题是2;

  1. 如何使用后端服务器身份验证?(特别是令牌验证点)
  2. 如何注销我的网络应用程序而不是Google?和问题1有关吗?(特别是,如果用户从Web应用程序注销,则另一个用户应该可以通过输入其ID和密码来登录)

authentication google-app-engine token oauth-2.0

6
推荐指数
1
解决办法
1万
查看次数

Django概念如何映射到Java,servlet,Struts 1和JSP页面?

我正在上Java Web开发课程,但我对Django有更多的经验.我知道有些概念是相似的,但它们在不同的层次和不同的名称中组合在一起.

Django概念如何映射到Java,反之亦然,JSP页面,Struts 1.x动作和FormBeans在哪些地方适合Django层?

java django jsp servlets struts-1

5
推荐指数
1
解决办法
3173
查看次数

使用Tomcat和cookie进行会话管理

我很难概念化Tomcat如何在幕后处理cookie和会话管理.

Tomcat何时何地发布cookie来管理HttpSession?根据这个问题/答案,会话是从最初的呼叫创建的getSession().

如果我正在运行Filter并调用getSession(),是否会自动附加必要的cookie(假设我已将web.xml配置为使用cookie)ServletResponse?如果没有,我该怎么办?我没有运行任何jsp.

java tomcat servlets java-ee session-cookies

4
推荐指数
1
解决办法
1万
查看次数

使用会话和cookie进行Servlet身份验证

我需要实现简单的servlet用户身份验证(在Java动态Web项目中),但有些事情让我感到困惑.

首先,servlet由于某种原因创建了cookie,JSESSIONID尽管我从未要求它.而且,我不能改变它的价值,如果我这样做request.addCookie(new Cookie("JSESSIONID", session.getId())),它会产生这样的东西:

Cookie: JSESSIONID=6B5B441038414B4381EDB7470018F90E; JSESSIONID=7890D45DF445635C49BDEB3CADA8AD99; .......
Run Code Online (Sandbox Code Playgroud)

所以,它复制了cookie.

其次,我不确定在哪里比较cookie和会话的id,以及在何处以及如何正确创建会话(即request.getSession(true? / false? / nothing?);)

我已经阅读了一些文档但仍需要帮助.


我有一个servlet HomeServlet,authentication如果用户未经过身份验证,则会将用户重定向到页面.

这是我如何做到的(HomeServlet.java):

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        if(request.getSession().getAttribute("user") != null) {
            request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
        } else {
            response.sendRedirect("authentication");
        }
    }
Run Code Online (Sandbox Code Playgroud)

而且我也有AuthServletjsp页面提供身份验证表单并验证用户.

AuthServlet.java:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String action = request.getParameter("ACTION");

    if ("login".equals(action)) {
        String[] result = doSomeValidations();

        if (result.size() > …
Run Code Online (Sandbox Code Playgroud)

java cookies session servlets

0
推荐指数
1
解决办法
3985
查看次数