public void process(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {// 处理 contentType 为 multipart/form-data 的 POST 请求request = processMultipart(request);// 取得 URI 路径String path = processPath(request, response);if(path == null)return;.....//确定客户端的位置// 是否要将一个Locale物件储存在 session 中// 配合 的 locale 属性使用processLocale(request, response);// 确定contentType,预设是 text/htmlprocessContent(request, response);// 判断属性nocache是否被确定// 若是,在 response 中加入防止快取的headerprocessNoCache(request, response);// 前置处理,预设返回 true//子类可以重新定义它以决定要不要继续处理if(!processPreProcess(request, response)) {return;}// 从URI路径确定ActionMappingActionMapping mapping =processMapping(request, response, path);if(mapping == null) {return;}....// 处理ActionForm// 如果没有就新增一个,之後一直使用它ActionForm form =processActionForm(request, response, mapping);// 将表单的栏位值填入ActionFormprocessPopulate(request, response, form, mapping);// 判断是否执行ActionForm的validate()方法if(!processValidate(request, response, form, mapping)) {return;}// 判断 标签的 forward 或 include 标签
// 是不是被设定,这两个标签在设定一个路径
// 其与 type 属性是互斥的,当设定其中一个属性时
// 调用 RequestDispatcher 的 forward() 或 include()
// 其作用与设定ForwardAction或IncludeAction相同
// 直接绕送而不再使用Action物件进行接下来的处理if(!processForward(request, response, mapping)) {return;}if(processInclude(request, response, mapping)) {return;}// 处理Action,如果没有就生成一个,之後一直使用它Action action =processActionCreate(request, response, mapping);if(action == null) {return;}// 呼叫Action的execute()或perform()方法
// 并返回ActionForwardActionForward forward =processActionPerform(request,response,action,for, mapping);// 处理ActionForwardprocessActionForward(request, response, forward);}