有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ajax如何将变量值从java类传递到jsp页面

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

Admin.java中,我通过函数检索名为res的变量的值。此变量需要传递到JSP页面

Admin.javaC:\Users\praveen\workspace\SemanticWeb\src\controller中,而index.jspC:\Users\praveen\workspace\SemanticWeb\WebContent

管理员的代码。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;
     }

索引的代码。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的值。我无法在Internet上获得有关我的代码的任何适当帮助。有人能帮我吗


共 (3) 个答案

  1. # 1 楼答案

    如果这是一个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.
    // >
    

    另一种方法是更换系统。出来用这个打印

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

    但我想这是一个糟糕的做法。参见示例here

  2. # 2 楼答案

    看起来您正在使用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"
    }
    
  3. # 3 楼答案

    根据你的代码

    request.setAttribute("rest", res);
    

    不应该将其设置为请求属性。只有在转发到JSP文件时,设置请求属性才有用。你需要直接写在回复上。将线路替换为

    response.getWriter().write(res);
    

    这样,它将在响应体中结束,并在JS函数中作为变量response可用

    另请参见: