package mypackage.servlets;
import java.io.IOException;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import mypackage.person.Address;
import mypackage.person.Person;
import mypackage.person.Phone;
import mypackage.util.JsonObjectResponse;
import mypackage.util.JsonResponseGeneratorUtil;
import flexjson.JSONSerializer;
public class PersonCRUDServlet extends HttpServlet {
public static int id = 0;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
doPost(request, response);
}
/**
* Method that handles all requests to this <code>HttpServlet</code>.
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/plain");
// Retrieve the writer from the HttpServletResponse.
Writer out = response.getWriter();
String action = request.getParameter("action");
if (action == null) {
return;
}
String returnValue = null;
if (action.equals("list")) {
returnValue = listPersons(request);
} else if (action.equals("create")) {
returnValue = createPerson(request);
} else if (action.equals("update")) {
returnValue = updatePerson(request);
} else if (action.equals("loadPerson")) {
returnValue = loadPerson(request);
} else if (action.equals("delete")) {
returnValue = deletePerson(request);
} else {
returnValue = "Not a valid action: " + action;
}
System.out.println(
"\nThe serialized data from the server is: \n" + returnValue);
// Write out the return value..
out.write(returnValue);
}
/**
* Retrieve the data off of the request and delete the person object(s).
* In a real application we would delete this data from the database.
* @param request
* @return a JSON formatted string that lets the user know if
* the deletion of the person(s) was successful or not.
*/
private String deletePerson(HttpServletRequest request) {
// Find the person to delete from the users session for the given id.
List<Person> persons =
(List<Person>) request.getSession().getAttribute("persons");
boolean found = false;
if (request.getParameter("id") != null) {
int personId = Integer.parseInt(
(String) request.getParameter("id").trim());
// Iterate through the list of persons from the users session.
// and remove the person to be deleted from the users session.
for (Iterator<Person> i = persons.iterator(); i.hasNext(); ) {
if (personId == i.next().getId()) {
i.remove();
found = true;
break;
}
}
}
String jsonResponse = null;
if (found) {
jsonResponse = JsonResponseGeneratorUtil.generateSimpleResponse(
true, "Person was deleted successfully.");
} else {
jsonResponse = JsonResponseGeneratorUtil.generateSimpleResponse(
false, "Person did not exist on session to be deleted.");
}
return jsonResponse;
}
/**
* Retrieve the data off of the request and update a person object.
* Take the person object and set it in the users session. In a real
* application we would save this data in the database.
* @param request
* @return a JSON formatted string that lets the user know if
* the update of the person was successful or not.
*/
private String updatePerson(HttpServletRequest request) {
Map<String, String> fieldErrors = new HashMap<String, String>();
Person person = new Person();
if (request.getParameter("firstName") != null) {
String firstname = (String) request.getParameter("firstName").trim();
person.setFirstName(firstname);
}
if (request.getParameter("lastName") != null) {
String lastname = (String) request.getParameter("lastName").trim();
person.setLastName(lastname);
}
if (request.getParameter("birthdate") != null) {
String birthdate = (String) request.getParameter("birthdate").trim();
person.setBirthdate(birthdate);
}
Address address = new Address(person.getId());
person.setAddress(address);
if (request.getParameter("street") != null) {
String street = (String) request.getParameter("street").trim();
person.getAddress().setStreet(street);
}
if (request.getParameter("city") != null) {
String city = (String) request.getParameter("city").trim();
person.getAddress().setCity(city);
}
if (request.getParameter("state") != null) {
String state = (String) request.getParameter("state").trim();
person.getAddress().setState(state);
}
if (request.getParameter("zip") != null) {
String zip = (String) request.getParameter("zip").trim();
person.getAddress().setZip(zip);
}
if (request.getParameter("phone") != null) {
String phone = (String) request.getParameter("phone").trim();
person.setPhone("Home", phone);
// Validate the phone field. It must be in the format of xxx-xxx-xxxx.
boolean valid = Pattern.matches("\\d{3}-\\d{3}-\\d{4}", phone);
if (!valid) {
fieldErrors.put("phone", "Phone must be in the format of xxx-xxx-xxxx");
}
}
// Pause the thread for 5 seconds to see the screen.
try {
Thread.sleep(5000);
} catch (Exception e) {}
String response = null;
// If there was a error in one of the fields the fieldErrors Map will
// not be empty.
if (fieldErrors.size() > 0) {
response = JsonResponseGeneratorUtil.generateValidationErrorsResponse(
false, "Please fix all highlighted errors.", fieldErrors);
} else {
// Find the person to update from the users session for the given id.
List<Person> persons =
(List<Person>) request.getSession().getAttribute("persons");
Person personToUpdate = null;
if (request.getParameter("id") != null) {
int personId = Integer.parseInt(
(String) request.getParameter("id").trim());
for (Person p : persons) {
if (p.getId() == personId) {
personToUpdate = p;
}
}
}
// Update the person that exists in the session with the data off of
// the form when all validation has passed.
personToUpdate.setFirstName(person.getFirstName());
personToUpdate.setLastName(person.getLastName());
personToUpdate.setBirthdate(person.getBirthdate());
personToUpdate.getAddress().setStreet(person.getAddress().getStreet());
personToUpdate.getAddress().setCity(person.getAddress().getCity());
personToUpdate.getAddress().setState(person.getAddress().getState());
personToUpdate.getAddress().setZip(person.getAddress().getZip().getZipcode());
// Remove all the phone objects off of the person in the session.
for (Iterator<Phone> i = personToUpdate.getPhoneNumbers().iterator(); i.hasNext(); ) {
i.next();
i.remove();
}
// Add all the phone objects from the form to the person in the session.
for (Phone newPhone : person.getPhoneNumbers()) {
personToUpdate.setPhone(newPhone.getName(), newPhone.getNumber());
}
response = JsonResponseGeneratorUtil.generateSimpleResponse(
true, "Person was updated successfully.");
}
// If there was an exception that occurred during the update of the person.
//response = JsonResponseGeneratorUtil.generateSimpleResponse(
// false, "Person was not updated successfully. Please try again.");
return response;
}
/**
* Retrieve the <code>Person</code> object off of the users session.
* In a real appl
Ext2.1 struts1.x spring 2.x hibernate 2.x
需积分: 3 4 浏览量
2008-09-08
11:26:06
上传
评论
收藏 32KB ZIP 举报
nickevin
- 粉丝: 0
- 资源: 8
最新资源
- Windows 常见运行运行库32+64
- 基于3KW光伏并网单相逆变器设计(TMS320F28035控制板+显示板+STM32F103功率板)硬件(原理图+PCB)工程
- 正点原子HAL库 STM32F4 外部中断(学习自用附源码)
- delphi rzcombobox DropDownList 灰色背景改为白色
- sap sd.docsap sd.doc
- torch-1.10.2-cp38-cp38-win-amd64.whl
- 菜单栏实现增加数据,修改数据,查询数据,删除数据
- 全国省市区三级联动json文件,带code
- C8_全局&局部&static.zip
- Unity和安卓交互插件Unity调Android Native Goodies PRO
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0