如何将变量值从java类传递到jsp页面
我有两个文件名为如何将变量值从java类传递到jsp页面,java,ajax,jsp,servlets,Java,Ajax,Jsp,Servlets,我有两个文件名为Admin.java和index.jsp 在Admin.java中,我通过一个函数检索名为res的变量的值。此变量需要传递到JSP页面 Admin.java位于C:\Users\praveen\workspace\SemanticWeb\src\controller中,而index.jsp位于C:\Users\praveen\workspace\SemanticWeb\WebContent中 Admin.java的代码是: public Admin() { super();
Admin.java
和index.jsp
在Admin.java
中,我通过一个函数检索名为res
的变量的值。此变量需要传递到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
值。我无法在Internet上获得有关我的代码的任何适当帮助。有人能帮我一下吗。看起来你在做AJAX,所以我想说你的回答需要以AJAX兼容的方式编码(JSON、XML等等)
如果使用AJAX编码,函数可能如下所示:
function(response)
{
var toplevel = response.<your_top_level_element>;
}
在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.
<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.
//-->
但我想这是一个坏习惯。参见示例。从代码中
request.setAttribute("rest", res);
您不应该将其设置为请求属性。设置请求属性只有在转发到JSP文件时才有用。你需要自己把它直接写在回复上。将线路更换为
response.getWriter().write(res);
这样,它将在响应体中结束,并在JS函数中作为变量response
可用
另见:
。要填充JSON对象,只需查看JSON简单文档。这非常简单-只需设置属性或填充数组,并最终调用toJSONString()
以获得正确的格式。谢谢您的建议。但是我需要从index.jsp中的java文件访问变量的值。因此,如果我将值发送到另一个ajax.jsp,它仍然需要发送到index.jsp。因此,如果我可以首先将变量的值传递给index.jsp,那就更好了。您的意思是,在浏览器中加载index.jsp之前,您已经拥有了该值。我认为该值是通过ajax请求的。如果是这样的话,我可以知道你的申请流程吗。例如,首先执行哪个文件。Index.jsp具有登录功能。我通过ajax调用admin.java,它负责验证用户。每个用户在注册时都会讲述他/她对任何语言的兴趣,如C、C++、java等。所有这些信息都存储在数据库中。一旦完成,当用户通过ADMIN登录应用程序时,Java就为感兴趣的人寻找登录的对象。这是通过名为SemanticSearch的函数完成的。这个函数返回变量'res'中感兴趣的值,我需要在admin.java返回后将其传递回index.jsp。就像我所说的ajax.jsp一样,这是处理res的人。然后在调用它之后,它将返回到您的ajax请求。您也可以不在Servlet中包含返回。关于我的第二个建议,这是最简单的方法之一。如果可以看到响应,请尝试发出警报(请求)。还要在ajax上添加错误处理程序,请参见“放置断点”;检查您的管理代码是否实际执行。是的,管理代码正在执行,并且res的值正在那里填充。我已经检查过了,但无法将其传递到所需的jsp页面。非常感谢。我正在index.jsp中获取变量res的值。
request.setAttribute("rest", res);
response.getWriter().write(res);