OA系统十八:请假申请四:【请假申请】这个内嵌界面中【提交请假表单数据】的Controller层;

本篇博客的主要内容是:

本篇博客需要注意的点:

(1)一种策略,或称之为一种思想:一个Controller的url设置成通配符的形式,从而实现不同的请求调用不同方法;

(2)加深感受下Session这个对象,很给力;

(3)捕捉异常的时候,(起码目前来看是这样的)习惯将异常扩大到Exception;

(4)待解决问题?????????????什么时候前台需要发起Ajax请求(对应的后台一般就要想前台文件输出Jason);什么时候前台发起的不是Ajax请求(对应的后台就直接重定向或者转发到前台文件,然后前台文件获取诸如request对象或者session对象中的数据);;;这一点,目前理解不深,还需要专门一篇博客来详细总结!!!!!!!主要是,什么时候使用Ajax请求,什么时候使用一般的请求!!!

(5)logger.error()的用法;

 

目录

一:请假申请的Controller层:LeaveFormServlet

二:LeaveFormServlet说明

(1)一种开发技巧:使用url通配符来实现【不同的url对应执行不同方法】的技巧;

(2)提取url中最后的那个单词(由此才能决定具体需要调用哪个方法)

(3)【(1)一种开发技巧:使用url通配符来实现【不同的url对应执行不同方法】的技巧;】的体现:【url不同调用的方法不同】;

(4)create()方法的整体结构:【获取前台数据】,【组织LeaveForm对象,作为调用Service层方法的参数】,【组织响应结果,向前台输出】

(5)create()方法的结构分析1:存储在session对象中的user属性很奥利给

(6)前台传过来的数据都是String格式的,如日期等数据需要格式化

(7)捕捉异常的时候,(起码目前来看是这样的)习惯将异常扩大到Exception

(7)前台文件会负责如“请假类型”向数字的转换

(8)处理完了之后,向前台输出JSON数据(前台发起的是Ajax请求???待确认……)

(9)如果程序出现了错误,调用logger.error()


完成请假申请的Controller层:(仅仅是新增,也只能新增;因为目前的Dao层和Service层只提供了新增的功能)

一:请假申请的Controller层:LeaveFormServlet

package com.imooc.oa.controller;

import com.alibaba.fastjson.JSON;
import com.imooc.oa.entity.LeaveForm;
import com.imooc.oa.entity.User;
import com.imooc.oa.service.LeaveFormService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


@WebServlet(name = "LeaveFormServlet",urlPatterns ="/leave/*")
public class LeaveFormServlet extends HttpServlet {
    private LeaveFormService leaveFormService = new LeaveFormService();
    private Logger logger = LoggerFactory.getLogger(LeaveFormServlet.class);

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //比如请求的url是:http://localhost/leave/create
        String uri = request.getRequestURI();//首先获取请求的uri
        String methodName = uri.substring(uri.lastIndexOf("/") + 1);//然后获取最后的参数;这儿的例子是create
        if (methodName.equals("create")) {
            this.create(request,response);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);

    }

    /**
     * 创建请假单
     * 获取前端数据,调用LeaveFormService中的createLeaveForm()方法,完成请假申请信息的新增工作;
     * @param request
     * @param response
     */
    private void create(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //1.接受前台传过来的请假单的数据
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute("login_user");
        String formType = request.getParameter("formType");//前台文件在向后台提交表单的时候,参数的命名需要和这儿对应;
        String strStartTime = request.getParameter("startTime");
        String strEndTime = request.getParameter("endTime");
        String reason = request.getParameter("reason");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH");//日期的格式

        //2.根据业务逻辑,结合前台传过来的请假单数据;组织LeaveForm对象,并调用Service层的方法
        Map result = ne
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值