繁体   English   中英

如何将变量的值从java类传递给jsp页面

[英]How to pass a value of a variable from a java class to the jsp page

我有两个名为Admin.javaindex.jsp文件。

Admin.java通过一个函数我检索名为res Admin.java的值。 需要将此变量传递给JSP页面。

Admin.java位于C:\\Users\\praveen\\workspace\\SemanticWeb\\src\\controllerindex.jsp位于C:\\Users\\praveen\\workspace\\SemanticWeb\\WebContent

Admin.java的代码是:

public Admin() 
{
  super();
}       

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

    if (action.equals("login")) 
    {
        String userName="";
        String password="";

        userName = request.getParameter("username");
        password = request.getParameter("password");

        response.setCharacterEncoding("UTF-8");

        SemanticSearch semsearch = new SemanticSearch(request.getSession());
        semsearch.loadData(REALPATH + RDFDATASOURCEFILE1);

        String res=semsearch.searchForUser(userName, password);
        System.out.println("The value of res been passed is "+res);

        request.setAttribute("rest", res);

        return;
     }

index.jsp的代码是

function login(user, pass) 
{

  $.ajax({
    type:"GET",
    url: "Admin?action=login",
    dataType: "text",
    data: { username: user, password: pass },
    success: function(response){

    }

在...内

function(response)
{
 ......
} 

我需要访问Admin.java传递的res值。 我无法在互联网上为我的代码获得任何适当的帮助。 请有人帮我这个。

好像你正在做AJAX,所以我说你的响应需要以与AJAX兼容的方式编码(JSON,XML,...)。

如果你进行AJAX编码,你的函数可能如下所示:

function(response)
{
 var toplevel = response.<your_top_level_element>;
} 

编辑:

我们使用JSON Simple进行JSON编码。

然后我们的Java后端看起来像这样(没有错误检查的简化版本):

public String execute()
{
  JSONObject jsonResult = new JSONObject();

  jsonResult.put( "result", "ok");

  return jsonResult.toJSONString();
}

并在Javascript函数中:

function(response)
{
 var result = response.result; //now yields "ok"
}

从你的代码,

request.setAttribute("rest", res);

您不应将其设置为请求属性。 设置请求属性仅在转发到JSP文件时才有用。 你需要自己直接写回答。 替换为

response.getWriter().write(res);

这样它就会在响应体中结束,并在JS函数中作为变量response使用。

也可以看看:

如果这是一个ajax请求,您可以将请求转发到另一个jsp页面而不是返回。 有了这个

getServletContext().getRequestDispatcher("/ajax.jsp").forward(request, response);

create the jsp page(ajax.jsp) on your webcontent and add this sample code.

<p>${rest}</p> 
<!-- Note: You can actually design your html here. 
     You can also format this as an xml file and let your js do the work.
//-->

另一种方法是用这个替换你的System.out.println

PrintWriter out = response.getWriter();
out.print("The value of res been passed is "+res);

但我想这是一个不好的做法。 这里的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM