Как передать значение переменной из java-класса на страницу jsp - PullRequest
7 голосов
/ 21 марта 2011

У меня есть 2 файла с именами 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)
{
 ......
} 

Мне нужно получить доступ к значению res, переданномуAdmin.java.Я не могу получить какую-либо надлежащую помощь для моего кода в Интернете.Пожалуйста, кто-нибудь может мне помочь с этим.

Ответы [ 3 ]

4 голосов
/ 21 марта 2011

Из вашего кода

request.setAttribute("rest", res);

Вы не должны устанавливать его как атрибут запроса. Установка атрибутов запроса полезна, только если вы пересылаете файл JSP. Вы должны написать это прямо к ответу самостоятельно. Заменить строку на

response.getWriter().write(res);

Таким образом, он окажется в теле ответа и будет доступен как переменная response в вашей функции JS.

Смотри также:

4 голосов
/ 21 марта 2011

Похоже, вы работаете с 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"
}
0 голосов
/ 21 марта 2011

Если это 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);

но я думаю, что это плохая практика. Смотрите пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...