标签: servlets

在不使用cookie API访问会话的情况下获取sessionId

我需要获得当前会话ID而不会访问会话(以使其有机会到期).

我使用了来自Servlet代码的Cookie,以保持会话未被触及,然后在超时时间后使会话过期.

我使用以下代码:

public static String getSessionId(HttpServletRequest request)
{
    String sessionId = "";
    String logMsg = "";
    if (request != null)
    {
        String sessionTimeout = PropertiesReader.SESSION_TIMEOUT_SCHEMA;
        if (sessionTimeout != null && SessionHelper.SESSION_TIMEOUT_FIXED.equalsIgnoreCase(sessionTimeout))
        {
            logMsg = "FIXED: Getting SessionId from Cookies with activating the session";
            Cookie[] cookies = request.getCookies();
            if (cookies != null)
            {
                for (Cookie cook : cookies)
                {
                    if ("JSESSIONID".equalsIgnoreCase(cook.getName()))
                    {
                        sessionId = cook.getValue();
                        break;
                    }
                }
            }
        } else
        {
            logMsg = "PER_USAGE: Getting SessionId from Session";
            sessionId …
Run Code Online (Sandbox Code Playgroud)

java cookies servlets session-timeout

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

在Centos而不是Windows上运行时,将XML转换为JSON会导致未知字符

我有一个Java servlet,它获取RSS feed将它们转换为JSON.它在Windows上运行良好,但在Centos上失败了.

RSS源包含阿拉伯语,它在Centos上显示难以理解的字符.我正在使用这些行来编码RSS提要:

byte[] utf8Bytes = Xml.getBytes("Cp1256");
//  byte[] defaultBytes = Xml.getBytes();

String roundTrip = new String(utf8Bytes, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

我在Glassfish和Tomcat上尝试过它.两者都有同样的问题; 它适用于Windows,但在Centos上失败.这是怎么造成的,我该如何解决?

java linux unicode servlets character-encoding

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

DBUtils - 使用ResultSetHandler

我试图使用ResultSetHandler将学生列表传递给servlet,但得到以下错误

java.lang.NumberFormatException: For input string: "id"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
Run Code Online (Sandbox Code Playgroud)

Student类中的方法是

          public List<Student> list2() throws SQLException {
          Connection connection = null;
          List<Student> studentList = null;
           try {
            Context initCtx = new InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            DataSource ds = (DataSource)
              envCtx.lookup("jdbc/TestDB");
             connection = ds.getConnection();

             ResultSetHandler h = new ArrayListHandler();

              QueryRunner run = new QueryRunner(ds);

              String sql = "select student_id, student_name from tbl_student";

              studentList = (List<Student>)run.query(sql, h);


          }catch(SQLException sqle) {
              sqle.printStackTrace();
          }

          catch(Exception e) {
              e.printStackTrace();
          }

          finally {
              DbUtils.closeQuietly(connection);
          }

          return …
Run Code Online (Sandbox Code Playgroud)

java jsp servlets jdbc

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

从Java servlet向HTML页面发送通知

我有一个Java servlet,在发送最终响应(这是一个PDF文件)之前,我需要向HTML页面发送一些通知.

基本上我需要让用户更新我正在执行的步骤,同时为他们生成PDF.

我猜,一种方法可以设置各种属性使用HttpSession并使用JS打印.但我不知道如何在不重新加载页面的情况下动态地执行此操作.

关于如何做到这一点的任何想法?我是JSP和servlet的新手.

javascript java jsp servlets web-applications

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

如何使用servlet获取glassfish的根目录的真实路径

我想在服务器(比如glassfish)根目录下创建并运行文件.

如果我将使用servlet获得服务器根目录的真实路径(C:\ glassfish3\glassfish\domains\domain1\docroot),那么我可以轻松地在该位置创建文件.

任何身体,如果知道,请告诉我!

java servlets

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

java中的url编码?

我想知道什么是url编码.我有2个jsp页面和一个servlet.当我运行应用程序时,显示的URL是:

http://localhost:8080/myproject/index.jsp

哪里

index.jsp:

<form action="Myservlet" method="post">
    <input type="text" name="mytext" id="mytext"/>
    <input type="submit" value="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)

单击提交按钮后,显示的URL为:

http://localhost:8080/myproject/Myservlet

URL编码是什么意思?我该如何编码网址?

index.jspMyservlet再到result.jsp

Myservet#doPost //我需要在这里进行URL编码吗?如果有,怎么样?

  fetching data from db.......
  ....................
  String nextJSP = "/result.jsp";
  RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
  dispatcher.forward(request,response);
Run Code Online (Sandbox Code Playgroud)

result.jsp中

displays data here

java url jsp servlets urlencode

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

HttpSession API

我是servlets的新手,我在HttpSession中有疑问,

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

        String name = request.getParameter("Name");
        String phone = request.getParameter("Phone");
        String dummy = "some";

        HttpSession ses = request.getSession();
        ses.setAttribute("SesName", name);
        ses.setAttribute("SesPhone", phone);
        ses.setAttribute("SesName", dummy);

        RequestDispatcher rd = request.getRequestDispatcher("./SessionApiImp");
        rd.forward(request, response);

    } 
Run Code Online (Sandbox Code Playgroud)

现在在另一个servlet中,

protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       // processRequest(request, response);
        HttpSession sess = request.getSession();

        PrintWriter pw = response.getWriter();

        pw.println(sess.getAttribute("SesName"));
        pw.println(sess.getAttribute("SesPhone"));

    } 
Run Code Online (Sandbox Code Playgroud)

- 为此分配了哪些值?我试过,它返回值与虚拟关联.是什么原因?

谢谢,Anil.

java session servlets

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

request.getHeader("referer"),比后退按钮重新加载页面

JSP1链接到JSP2.

JSP2调用一个servlet,它执行一些操作并以以下结尾:

response.sendRedirect(request.getHeader("referer"));
return;
Run Code Online (Sandbox Code Playgroud)

此时我又回到了JSP2.问题是从那里按下浏览器后退按钮,页面只是重新加载自己而不是返回到JSP1.这是正确的,因为sendRedirect会在历史记录中添加一个条目.

但是我想回到JSP1.有小费吗?

http-referer jsp servlets back

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

解码UTF-16文本

我有一个Java servlet,它通过HTTP GET请求从上游系统接收数据.此请求包含一个名为"text"的参数和另一个名为"charset"的参数,该参数指示text参数的编码方式:

如果我指示上游系统向我发送文本T?并调试servlet请求参数,我会看到以下内容:

request.getParameter("charset") == "UTF-16LE"
request.getParameter("text").getBytes() == [0, 84, 1, 0]
Run Code Online (Sandbox Code Playgroud)

此字符串中两个字符的代码点(十六进制)为:

[T]  0054
[?]  0100
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何将其转换byte[]回String "T?".我应该提一下,我并不完全信任charset并怀疑它可能正在使用UTF-16BE.

java servlets character-encoding

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

Java:如何处理servlet中的多个会话

我是Java EE的新手.我有一个网站,要求用户登录,并在用户登录后,我希望用户看到他/她自己的项目(例如:购物车).

所以这意味着我必须使用一个会话来完成它.但是我该如何处理多个会话?

例如,多个用户登录到系统以及同一个servlet?但是,我可以在一个servlet中保留多个会话吗?我是否记录下每一个?它是如何工作的?

有人可以举个例子吗?

java session servlets java-ee session-cookies

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