简体   繁体   中英

Multiple if else statement with parameter in doGet() servlet

I am having some problem when trying to execute different method in servlet doGet(). So when my button on click, it will pass along the eventID:

viewDtlEventBtn.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            Intent eventDtlIntent = new Intent(context, EventDetail.class);
            eventDtlIntent.putExtra("eventID", eventIDTV.getText());
            startActivity(eventDtlIntent);
        }
    });

Then in my EventDetail class, I am executing the method in AsyncTask class:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.event_detail);
    context = this; 
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        eventID = extras.getString("eventID");
    }       
    eventModel.setEventID(eventID);
    new GetEventDetailAsyncTask(context).execute(eventModel);
}

And in my AsyncTask class, I am calling the method in my controller which retrieving the JSON returned from servlet:

@Override
protected Double doInBackground(Event... params) {
    try {
        eventCtrl.getEventDetailByID(params[0]);
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

And in my controller class:

public Event getEventDetailByID(Event event) throws JSONException {
    Event eventModel = new Event();
    String page;
    JSONArray jsonArray;
    String eventID = event.getEventID();

    try {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(ENeighbourhoodActivity.URL
                + "?getEventDetailByID&eventID=" + eventID +"");
        HttpResponse response = client.execute(request);
        HttpEntity entity = response.getEntity();
        String responseString = EntityUtils.toString(entity, "UTF-8");
        page = "{\'EventDetail\':" + responseString + "}";
        try {
            JSONObject jsonObject = new JSONObject(page);
            jsonArray = jsonObject.getJSONArray("EventDetail");
            int length = jsonArray.length();
            for (int i = 0; i < length; i++) {
                JSONObject attribute = jsonArray.getJSONObject(i);
                String eventName = attribute.getString("eventName");
                eventModel.setEventName(eventName);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return event;
}

And basically from here, I am accessing the servlet. And in my doGet() in serlvet class:

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    JSONArray jsonArray = new JSONArray();
    PrintWriter out = response.getWriter();

    if (request.getParameter("getAllEvent") != null) {  
    }

    catch (JSONException je) {
        System.out.println(je.getMessage());
    } catch (Exception exc) {
        System.out.println(exc.getMessage());
    }
    out.println(jsonArray.toString());
    }
}

I already have one if statement for some other methods. I wonder how should I pass the getEventDetailByID and the eventID parameter into servlet so that it knows which method to runs.

Thanks in advance.

Here is a example of how you can get the eventID value.

        //gets value from getEventDetailByID parameter.
        String detail = request.getParameter("getEventDetailByID");
        if (detail != null && !detail.equals("")) {
            int eventId = Integer.parseInt(request.getParameter("eventID"));
            //get event detail by id with id 
            //e.g resultObject = myMethod(detail, eventId);
        }

Update 1: A better way of doing what is required:

        String action = request.getParameter("action");
        if (action.equalsIgnoreCase("GetById")) {
            int eventId = Integer.parseInt(request.getParameter("eventID"));
            //get event detail by id with id 
            //e.g resultObject = getById(eventId);
        } else if (action.equalsIgnoreCase("GetAllEvents")) {
            //Get all events
            //e.g resultObject = GetAllEvents();
        } else {
        }

The URL usage:

to get event by id:

http://localhost:8080/WebService/EventDetailServlet?action=GetById&eventID=46

to get all event details

http://localhost:8080/WebService/EventDetailServlet?action=GetAllEvents

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM