Как вызвать метод в Java по ссылке?

Это мой сервлет:

   @WebServlet({ "/Response", "/reportsto" })
  public class Response extends HttpServlet {
  private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public Response() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    services2   messageservice = new services2();
    services3      jiraservice = new services3();
    service4            empid = new service4();
    String id = request.getParameter("ManagerId");

    try {

        String name = "";
        String id1 =empid.getEmpId(id);
        System.out.println("id is ===> "+id1);
        Map<Object, Object> map=messageservice.getReportees(id1);
        Set<Map.Entry<Object,Object>> s1=map.entrySet();
        for (Iterator<Map.Entry<Object,Object>> iterator = s1.iterator(); iterator.hasNext();)  {
            Map.Entry<Object,Object> entry = iterator.next();
            Object name1 = entry.getKey();
            Object value = entry.getValue();
                    PrintWriter out=response.getWriter();
                    out.println("<html><body><table>\r\n" + 
                            "<tr>\r\n" + 
                            "<th>User Id</th>\r\n" + 
                            "<th>Username</th>\r\n" + 
                            "</tr>\r\n" + 
                            "<tr>\r\n" + 
                            "<td>"+value+"</td>\r\n" + 
                            "<td><a href=''>"+name1+"</a></td>\r\n" + 
                            "</tr>\r\n" + 
                            "</table></body></html>");
 //how should I pass the object value to getJiras which   accepts the strings.   
                }
    I will get the output as:
      User Id   Username
      AR12345   Anagha R        

Итак, если я нажму на Anagha, идентификатор пользователя должен быть передан в getJiras, который имеет возвращаемый тип как объект карты, а затем он должен обработать и отобразить CHA-3603: Проверка версии в браузере на той же странице, что и в выходных данных выше.

 getJiras()

   public class services3{ 
   public Map<Object, Object> getJiras(String values) throws Exception {
        String api = "https:*****";
        String id  = values;
        String ext= "******";
        String url = api+id+ext;
        String name = "******";
        String password = "********";
        String authString = name + ":" + password;
        String authStringEnc = new BASE64Encoder().encode(authString.getBytes());
        System.out.println("Base64 encoded auth string: " + authStringEnc);
        Client restClient = Client.create();
        WebResource webResource = restClient.resource(url);
        ClientResponse resp = webResource.accept("application/json")
                                         .header("Authorization", "Basic " + authStringEnc)
                                         .get(ClientResponse.class);
        if (resp.getStatus() != 200){
            System.err.println("Unable to connect to the server");
        }
      //here I am trying to parse the json data.
        JSONParser parse = new JSONParser();
        JSONObject jobj = (JSONObject)parse.parse(output);
        JSONArray jsonarr_1 = (JSONArray) jobj.get("issues");
        System.out.println("The total number of issues in validating release   are:"+jsonarr_1.size());

        Map<Object, Object> map=new HashMap<Object,Object>();
        for(int i=0;i<jsonarr_1.size();i++){
            JSONObject jsonobj_1 = (JSONObject)jsonarr_1.get(i);
            JSONObject jsonobj_2 = (JSONObject)jsonobj_1.get("fields");
            JSONObject status1   = (JSONObject)jsonobj_2.get("status");
            JSONObject issuetype = (JSONObject)jsonobj_2.get("issuetype");

            Object obj1         =  jsonobj_1.get("key");
            Object obj2         =  status1.get("name");

            map.put(obj1, obj2);
        }
        return  map;
    }

Также как я могу также отобразить размер массива json, который печатается в браузере. Проблема усложняется с каждым днем. Пожалуйста, помогите решить эту проблему. Заранее спасибо

Могу я предложить взглянуть на архитектуру Spring MVC и Spring Boot. Написание таких жестких сервлетов возможно, но намного сложнее.

rustyx 10.01.2019 09:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
67
1

Ответы 1

Вы можете создать другой сервлет или использовать тот же сервлет для выполнения еще одного запроса get. Этот запрос перезвонит на jira service.

Случай 1: Создайте еще один сервлет, он похож на то, что вы делаете Случай 2: Вы можете настроить свой текущий метод сервлета doGet. Пример кода ниже.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String requestAction = request.get("action");
  if ("detail".equals(requestAction)) {
    services3 service = new services3();
     //get result.
  } else if ("view".equals(requestAction)){
   //your current code
  }
  //add result to response
}

эй, если мы создадим другой сервлет, как мы можем передать параметр значения другому сервлету, который в свою очередь вызовет службу jira

RAMYA 10.01.2019 10:06

@RAMYA, вы можете использовать web.xml для настройки нескольких сервлетов. Посмотри на этот stackoverflow.com/questions/43559372/…

Tran Ho 10.01.2019 10:13

Предположим, у меня есть еще один сервлет с именем servlet2, как мне передать параметр значения (динамически изменяется) из servlet1 в теге href

RAMYA 10.01.2019 10:28

Другие вопросы по теме