2016-09-29 6 views
1

Я создал службу восстановления Java, используя JSON, и я получаю некоторое значение от этой службы, тогда я хочу заполнить это значение на одной странице JSP.Заполнение значений из Java Restful Service в JSP Страница

Мой "test.jsp" страница

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>test</title> 
</head> 
<body> 
    <form action="loginServlet" method="post"> 
     <table> 
      <tr> 
       <td>First Name :</td> 
       <td><input type="text" value="" name="txtFirstname" value='<%=request.getParameter("firstinput")%>' /></td> 
      </tr> 
      <tr> 
       <td>Email :</td> 
       <td><input type="text" name="txtEmail" value='<%=request.getParameter("firstinput")%>' /></td> 
      </tr> 
      <tr align="center"> 
       <td colspan="2"><input type="submit" value="Submit" /></td> 
      </tr> 
     </table> 
    </form> 
</body> 
</html> 

Мой service.java код ниже

package test.xyz.abc; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.TimeZone; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import org.json.JSONObject; 

@Path("/") 
public class Service { 
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    SimpleDateFormat returnDateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm"); 

    @POST 
    @Consumes("application/x-www-form-urlencoded") 
    @Path("/auth") 
    public void Auth(String json) { 
     Date dt = new Date(); 
     formatter.setTimeZone(TimeZone.getTimeZone("IST")); 
     String currentTime = formatter.format(dt); 
     JSONObject returnJson = new JSONObject(); 

     try { 
      JSONObject innerJsonObj = new JSONObject(json); 
      String email = innerJsonObj.getString("email"); 
      String fname = innerJsonObj.getString("fname"); 

      //How to put email and fname values into "test.jsp" page 
     } catch (Exception e) { 
     } 
    } 
} 

"web.xml" Код

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    id="WebApp_ID" version="3.1"> 
    <display-name>test</display-name> 
    <welcome-file-list> 
     <welcome-file>test</welcome-file> 
    </welcome-file-list> 
    <servlet> 
     <servlet-name>test</servlet-name> 
     <servlet-class>com.sun.jersey.server.impl.container.servlet.ServletAdaptor</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>test</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Я использую Eclipse, Mars1 и Java.

+1

Вам нужно будет позвонить в службу при рендеринге JSP, чтобы получить значения там. Только это должно заставить вас задаться вопросом, является ли это приемлемым подходом. Возможно, вам лучше использовать JavaScript (возможно, основанную на JS-платформу) или использовать другую службу (может быть, что-то такое, что служба RESTful и JSP оба звонят. – Thomas

+0

Вы хотите использовать web-сервис во время генерации JSP? Тогда почему использовать веб-сервис, если вы вызываете его с сервера? Вызовите метод напрямую (не очень) или переместите логику в класс контроллера и перенаправите службу в нее. Верните экземпляр для работы в JSTL в JSP – AxelH

+0

@AxelH У меня есть для создания одной Службы, которая используется для данных JSON, и я должен получить эти данные и показать их на моей странице JSP. – user3441151

ответ

0

Вы говорите о странице JSP, что означает, что вы все еще находитесь на сервере. Поэтому вам не нужно использовать веб-сервис (дверь для доступа к серверу).

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

interface Controler { 
    public Auth auth(); return an instance of Auth(String email, String fname) 
} 

В классе Servlet получите результат, который нажимает его непосредственно (необходимо быть BEAN).

class Servlet { 
    Controler c; //Create a instance of the implementation of Controler 

    doGet(...) { //push attribute of c.auth() } 
} 

Затем вам просто нужно обновить JSP для работы с атрибутом, который вы отправляете, чтобы заполнить страницу.

Позже, если вы хотите использовать AJAX, используйте WebService для вызова метода управления. Преобразуйте экземпляр в JSON, чтобы отправить результат.

class Service{ 
    Controler c; //Create a instance of the implementation of Controler 

    //NEED TO RETURN A STRING 
    public String Auth(){ 
     return c.auth() 
          .toJson() //Return a JSON with the data of the instance 
          .toString(); //parsing the JSON in a String 
    } 
} 

EDIT

Так как вы только хотите OT получить это значение динамически от клиента. Вам нужно будет использовать Javascript для вызова Ajax вашего веб-сервиса. Это приведет к восстановлению созданного вами JSON. Конечно, вам нужно исправить ваш сервис, чтобы что-то вернуть, ваш auth ничего не возвращает.

SO разберите JSON, который вы создаете в String (toString()).

И из части Javascript вам нужно будет создать JSON из String, к счастью, это также очень просто. Используя JQuery, вам просто нужно указать, что вы ожидаете json, данные будут объектом javascrip. Если нет, то вам нужно разобрать строку самостоятельно, обратите внимание на следующее, чтобы увидеть, как получить некоторые данные из URL (в формате JSON):

Jquery/Ajax - Parse JSON Response

При этом, вы можете сделать это.

 Смежные вопросы

  • Нет связанных вопросов^_^