gpt4 book ai didi

java - doGet() servlet 中带参数的多个 if else 语句

转载 作者:行者123 更新时间:2023-11-30 02:33:53 29 4
gpt4 key购买 nike

我在尝试在 servlet doGet() 中执行不同的方法时遇到了一些问题。所以当我点击按钮时,它会传递 eventID:

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

然后在我的 EventDetail 类中,我正在执行 AsyncTask 类中的方法:

@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);
}

在我的 AsyncTask 类中,我调用 Controller 中的方法来检索从 servlet 返回的 JSON:

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

在我的 Controller 类中:

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;
}

基本上从这里开始,我正在访问 servlet。在我的 serlvet 类中的 doGet() 中:

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());
}
}

我已经有一些其他方法的 if 语句。我想知道我应该如何将 getEventDetailByID 和 eventID 参数传递给 servlet,以便它知道要运行哪个方法。

提前致谢。

最佳答案

这是一个如何获取 eventID 值的示例。

        //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);
}

更新 1:一种更好的方法来完成所需的事情:

        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 {
}

URL 用法:

通过id获取事件:

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

获取所有事件详情

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

关于java - doGet() servlet 中带参数的多个 if else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com