【问题标题】:How to call the method in Java clicking on a link?如何在Java中单击链接调用方法?
【发布时间】:2019-01-10 04:55:58
【问题描述】:

这是我的 servlet:

   @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,则必须将用户 ID 传递给返回类型为 Map Object 的 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。像你一样编写核心 servlet 是可能的,但要困难得多。

标签: java


【解决方案1】:

您可以创建另一个 servlet 或使用相同的 servlet 再发出一个 get 请求。该请求将调用jira service

案例 1:创建另一个 servlet,它与您正在做的类似 案例 2:您可以自定义当前的 servlet 方法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
}

【讨论】:

  • 嘿,如果我们创建另一个 servlet,我们如何将 value 参数传递给另一个调用 jira 服务的 servlet
  • @RAMYA,可以使用web.xml配置多个servlet。看看这个stackoverflow.com/questions/43559372/…
  • 假设我现在有另一个名为 servlet2 的 servlet,我应该如何在 href 标记中从 servlet1 传递值参数(动态变化)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 2017-12-25
  • 2011-11-10
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多