/**
* Controller继承了javax.servlet.http.HttpServlet类
* 它的doGet和doPost方法都调用process方法,这是Servlet控制器的核心
*
* @author cxp
* @date 2016-10-17
*
*/
public class ControllerServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1579L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
process(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
process(request, response);
}
private void process(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
//request.setCharacterEncoding("UTF-8");
String uri = request.getRequestURI();
/**
* 完整的uri应该是:/app10a/product_input
* 但事件中有默认的应用程序名,所以应用名可以为空:/product_input
*/
int lastIndex = uri.lastIndexOf("/");
String action = uri.substring(lastIndex + 1);
String dispatchUrl = null;
// 执行动作
if (action.equals("product_input")) {
dispatchUrl = "/ProductForm.jsp";
} else if (action.equals("product_save")) {
// 创建form
ProductForm productForm = new ProductForm();
// 动作属性
productForm.setName(request.getParameter("name"));
productForm.setDescription(request.getParameter("description"));
productForm.setPrice(request.getParameter("price"));
// 验证用户输入
ProductValidator productValidator = new ProductValidator();
List<String> errors = productValidator.validate(productForm);
if (errors.isEmpty()) {
// 创建模型实体类
Product product = new Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
product.setPrice(Float.parseFloat(productForm.getPrice()));
// 执行动作方法
SaveProductAction saveProductAction = new SaveProductAction();
saveProductAction.save(product);
// 保存模型在请求属性中
request.setAttribute("product", product);
dispatchUrl = "/ProductDetails.jsp";
}else{
request.setAttribute("errors", errors);
request.setAttribute("form", productForm);
dispatchUrl = "/ProductForm.jsp";//返回提交表单的页面
}
}else if(action.equals("product_list")){
GetProductAction getProductAction=new GetProductAction();
List<Product> products=getProductAction.getProducts();
request.setAttribute("products", products);
dispatchUrl="/ProductList.jsp";
}
// 转发到视图
if (dispatchUrl != null) {
RequestDispatcher rd = request.getRequestDispatcher(dispatchUrl);
rd.forward(request, response);
}
}
}
servlet小记
最新推荐文章于 2018-09-04 20:59:04 发布
787

被折叠的 条评论
为什么被折叠?



