如何将变量的值从java类传递到jsp页面
我有两个名为Admin.java
和index.jsp
文件。
在Admin.java
通过一个函数,我检索名为res
Admin.java
的值。 需要将此变量传递给JSP页面。
Admin.java
位于C:\Users\praveen\workspace\SemanticWeb\src\controller
而index.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
值。 我无法在互联网上为我的代码获得任何适当的帮助。 请有人帮我这个。
从你的代码,
request.setAttribute("rest", res);
您不应将其设置为请求属性。 设置请求属性仅在转发到JSP文件时才有用。 你需要自己直接写回答。 替换为
response.getWriter().write(res);
这样它最终会进入响应体,并在JS函数中作为变量response
使用。
也可以看看:
- 如何通过Servlet / Ajax更新当前页面?
看起来你正在做AJAX,所以我说你的响应需要以与AJAX兼容的方式编码(JSON,XML,…)。
如果你进行AJAX编码,你的函数可能如下所示:
function(response) { var toplevel = response.; }
编辑:
我们使用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" }
如果这是一个ajax请求,您可以将请求转发到另一个jsp页面而不是返回。 有了这个
getServletContext().getRequestDispatcher("/ajax.jsp").forward(request, response); create the jsp page(ajax.jsp) on your webcontent and add this sample code. ${rest}
另一种方法是用这个替换你的System.out.println
PrintWriter out = response.getWriter(); out.print("The value of res been passed is "+res);
但我想这是一个不好的做法。 见这里的例子。
- 使用application / json contentType的AJAX POST调用获取“no’Access-Control-Allow-Origin’标头”错误
- 点击显示iframe
- Java Servlets – Ajax请求带有混合响应
- 长轮询冻结浏览器并阻止其他ajax请求
- java.lang.AbstractMethodError:org.apache.xerces.dom.ElementImpl.getTextContent()Ljava / lang / String
- Spring MVC – RequestParamException参数不存在
- 使用ajax调用Struts 2动作,它直接将字符串写入响应并不返回字符串
- Spring Security CSRF令牌不使用AJAX
- ajax + servlet国家城市列表