简历可假,但功夫不可假啊,兄弟!!

最近公司项目紧张,决定招一俩个熟手
招聘信息发出后收到一大堆简历
昨天两三个面试,今天三个还是四个(我们加班)
面试很简单,先是做基础题
然后是机试
我以为对有一两年工作经验的兄弟们
机试简直是 a pice of cake
然而我错了
简单的增、改都没一个做出来了
而且增改只要求写很少很少的代码
是我们在做的项目系统码表模块
就是在 action 中清掉一些代码让填空及 struts 配置文件
service 层代码都封装好了直接调用
下面将一些代码帖出来
各们看客看看是不是真的很难?

package com.xx.xx.system.webapp.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.xx.xx.Constants;
import com.xx.xx.system.model.AppCode;
import com.xx.xx.system.service.AppCodeManager;
import com.xx.xx.system.util.ExcelTool;
import com.xx.xx.system.util.ManageHelper;
import com.xx.xx.system.util.Pagination;
import com.xx.xx.system.webapp.form.AppCodeForm;

/**
 * 完成增加 删除 修改方法
 * 基本方法在service层 在AppCodeManager中
 * 
 */
public final class AppCodeAction extends BaseAction {

	public ActionForward cancel(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		return mapping.findForward("search");
	}

	/**
	 * 删除
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward delete(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (log.isDebugEnabled()) {
			log.debug("Entering 'delete' method");
		}

		ActionMessages messages = new ActionMessages();
		AppCodeForm appCodeForm = (AppCodeForm) form;
		String codeName =appCodeForm.getCodeName();
		//service层Manager
		AppCodeManager appCodeMgr = (AppCodeManager) getBean("appCodeManager");;
		// TODO 调用service层 根据Id 删除appCode
//		appCode = appCodeMgr.		
		
		messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
				"appCode.deleted",codeName));

		// save messages in session, so they'll survive the redirect
		saveMessages(request.getSession(), messages);
		
		return mapping.findForward("search");
	}

	/**
	 * 修改或增加
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward edit(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (log.isDebugEnabled()) {
			log.debug("Entering 'edit' method");
		}
		AppCodeForm appCodeForm = (AppCodeForm) form;

		AppCode appCode = new AppCode();
		if (StringUtils.isNotEmpty(appCodeForm.getId())) {
			//service层Manager	
			AppCodeManager appCodeMgr = (AppCodeManager) getBean("appCodeManager");
			// TODO 调用service层 根据Id 查询得到appCode实例
//			appCode = appCodeMgr.
			
			
			//po 转换成 form
			appCodeForm = (AppCodeForm) convert(appCode);
			updateFormBean(mapping, request, appCodeForm);
		}
	
		return mapping.findForward("edit");
	}

	/**
	 * 保存方法
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward save(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (log.isDebugEnabled()) {
			log.debug("Entering 'save' method");
		}

		// Extract attributes and parameters we will need
		ActionMessages messages = new ActionMessages();
		AppCodeForm appCodeForm = (AppCodeForm) form;
		boolean isNew = StringUtils.isEmpty(appCodeForm.getId());
		String codeName =appCodeForm.getCodeName();
		//service层Manager
		AppCodeManager appCodeMgr = (AppCodeManager) getBean("appCodeManager");
		 //Form 转换成po
		AppCode appCode = (AppCode) convert(appCodeForm);
		// TODO 保存调用service层 保存实例方法
//		appCode = appCodeMgr.
		
		// add success messages
		if (isNew) {
			
			messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
					"appCode.added",codeName));

			// save messages in session to survive a redirect
			saveMessages(request.getSession(), messages);

			return mapping.findForward("search");
		} else {
			
			
			messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
					"appCode.updated",codeName));
			saveMessages(request, messages);

			return mapping.findForward("edit");
		}
	}

	/**
	 * 查询
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward search(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (log.isDebugEnabled()) {
			log.debug("Entering 'search' method");
		}
		AppCodeForm appCodeForm = (AppCodeForm) form;
		AppCode appCode = (AppCode) convert(appCodeForm);
		Pagination pagination = getPagination(request);
		AppCodeManager appCodeMgr = (AppCodeManager) getBean("appCodeManager");
		pagination.setSearchId(Constants.APPCODE_LIST);
		//查询
		List appCodes = appCodeMgr.getAppCodesByQuery(appCode, pagination);
		request.setAttribute(Constants.RESULT_SIZE_KEY, pagination.getFullListSize());
		request.setAttribute(Constants.APPCODE_LIST, appCodes);
		return mapping.findForward("list");
	}
	

	public ActionForward unspecified(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		return search(mapping, form, request, response);
	}
	/**
	 * 查看方法
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ActionForward view(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		if (log.isDebugEnabled()) {
			log.debug("Entering 'view' method");
		}
		AppCodeManager appCodeMgr = (AppCodeManager) getBean("appCodeManager");

		return mapping.findForward("view");
	}
}


下面是配置文件
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>

	<!-- ========== Data Sources Definitions =================================== -->
	<!--
		Define your Struts data sources in a file called struts-data-sources.xml and place
		it in your merge directory.
	-->

	<!-- ========== Form Bean Definitions =================================== -->
	<form-beans>
		<form-bean name="roleForm"
			type="com.xx.xx.system.webapp.form.RoleForm" />
		<form-bean name="userForm"
			type="com.xx.xx.system.webapp.form.UserForm" />
		<form-bean name="addressForm"
			type="com.xx.xx.system.webapp.form.AddressForm" />
		<form-bean name="appNumberForm"
			type="com.xx.xx.system.webapp.form.AppNumberForm" />
		<form-bean name="appDepartmentForm"
			type="com.xx.xx.system.webapp.form.AppDepartmentForm" />
		<form-bean name="appCodeForm"
			type="com.xx.xx.system.webapp.form.AppCodeForm" />
		<form-bean name="appOrganizationForm"
			type="com.xx.xx.system.webapp.form.AppOrganizationForm" />
    <form-bean name="addCodeForm" type="com.xx.struts.form.AddCodeForm" />
    

	</form-beans>

	<!-- ========== Global Exceptions Definitions =================================== -->
	<global-exceptions>
		<exception type="java.lang.Exception" key="errors.general"
			handler="com.xx.xx.system.webapp.action.ActionExceptionHandler" />
	</global-exceptions>

		<!-- ========== Global Forward Definitions =================================== -->
	<global-forwards>
		<forward name="mainMenu" path="/mainMenu.html" redirect="true" />
		<!-- Forwards specified in actions -->
		<forward name="addUser"
			path="/system/editUser.html?method=Add&amp;amp;from=list"
			redirect="true" />
		<forward name="cancelUser"
			path="/system/editUser.html?method=Cancel" />
		<forward name="deleteUser"
			path="/system/editUser.html?method=Delete" />
		<forward name="updateUser" path="/system/userProfile.html" />
		<!-- Forwards for links used in Menu -->
		<forward name="editProfile" path="/system/editProfile.html" />
		<forward name="editUser" path="/system/editUser.html" />
		<forward name="viewUsers" path="/system/users.html"
			redirect="true" />
		<forward name="selectFile" path="/s.
		electFile.html" />
		<forward name="logout" path="/logout.jsp" />
	</global-forwards>


	<!-- ========== Action Mapping Definitions =================================== -->
	<action-mappings>


		<!--  这是用户编码的设置  完成增减 删除 修改 工作
		
		 注意 action web.xml servlet-mapping配置 过滤的是*.html后缀名
		   查询列表action path已经配置完成 其他参照查询列表
		-->
		<action path="/system/appCodes"
			type="com.xx.xx.system.webapp.action.AppCodeAction"
			name="appCodeForm" scope="session" input="mainMenu"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="list" path="/system/appCodeList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appCodes.html"
				redirect="true" />
		</action>
			
		<!-- 修改增加配置-->
		<action path=""
			type="com.xx.xx.system.webapp.action.AppCodeAction"
			name="appCodeForm" scope="request" input="list" parameter="method"
			unknown="false" validate="false">
			<set-property property="cancellable" value="true" />

		</action>
		<!-- 查看页面配置-->
		<action path=""
			type=""
			name="" scope="request" input="edit" parameter="method"
			unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
		</action>
		
		<!-- 删除页面配置-->
		<action path=""
			type=""
			name="" scope="request" input="list" parameter="method"
			unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
		</action>

			
		
		
		
		
		
		<!-- 以下可以作为示例 -->
		
		<action path="/system/appDepartments"
			type="com.xx.xx.system.webapp.action.AppDepartmentAction"
			name="appDepartmentForm" scope="request" input="mainMenu"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appDepartmentForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppDepartment.jsp"
				redirect="false" />
			<forward name="list" path="/system/appDepartmentList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appDepartments.html"
				redirect="true" />
			<forward name="viewer" path="/system/viewAppDepartment.html"
				redirect="true" />
		</action>
		<action path="/system/editAppDepartment"
			type="com.xx.xx.system.webapp.action.AppDepartmentAction"
			name="appDepartmentForm" scope="request" input="list"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appDepartmentForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppDepartment.jsp"
				redirect="false" />
			<forward name="list" path="/system/appDepartmentList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appDepartments.html"
				redirect="true" />
			<forward name="viewer" path="/system/viewAppDepartment.html"
				redirect="true" />
		</action>
		<action path="/system/saveAppDepartment"
			type="com.xx.xx.system.webapp.action.AppDepartmentAction"
			name="appDepartmentForm" scope="request" input="edit"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appDepartmentForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppDepartment.jsp"
				redirect="false" />
			<forward name="list" path="/system/appDepartmentList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appDepartments.html"
				redirect="true" />
			<forward name="viewer" path="/system/viewAppDepartment.html"
				redirect="true" />
		</action>
		<action path="/system/viewAppDepartment"
			type="com.xx.xx.system.webapp.action.AppDepartmentAction"
			name="appDepartmentForm" scope="request" input="list"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appDepartmentForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppDepartment.jsp"
				redirect="false" />
			<forward name="list" path="/system/appDepartmentList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appDepartments.html"
				redirect="true" />
			<forward name="viewer" path="/system/viewAppDepartment.html"
				redirect="true" />
		</action>
		<action path="/system/deleteAppDepartment"
			type="com.xx.xx.system.webapp.action.AppDepartmentAction"
			name="appDepartmentForm" scope="request" input="list"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appDepartmentForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppDepartment.jsp"
				redirect="false" />
			<forward name="list" path="/system/appDepartmentList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appDepartments.html"
				redirect="true" />
			<forward name="viewer" path="/system/viewAppDepartment.html"
				redirect="true" />
		</action>
	
				<!-- 用户单位-->
		<action path="/system/appOrganizations"
			type="com.xx.xx.system.webapp.action.AppOrganizationAction"
			name="appOrganizationForm" scope="request" input="mainMenu"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appOrganizationForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppOrganization.jsp"
				redirect="false" />
			<forward name="list" path="/system/appOrganizationList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appOrganizations.html"
				redirect="true" />
			<forward name="viewer"
				path="/system/viewAppOrganization.html" redirect="true" />
		</action>
		<!-- 选择单位包括的用户-->
		<action path="/api/appOrganizations"
			type="com.xx.xx.system.webapp.action.AppOrganizationAction"
			name="appOrganizationForm" scope="request" input="mainMenu"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="list" path="/test.jsp"
				redirect="false" />
		</action>
		<action path="/system/editAppOrganization"
			type="com.xx.xx.system.webapp.action.AppOrganizationAction"
			name="appOrganizationForm" scope="request" input="list"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appOrganizationForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppOrganization.jsp"
				redirect="false" />
			<forward name="list" path="/system/appOrganizationList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appOrganizations.html"
				redirect="true" />
			<forward name="viewer"
				path="/system/viewAppOrganization.html" redirect="true" />
		</action>
		<action path="/system/saveAppOrganization"
			type="com.xx.xx.system.webapp.action.AppOrganizationAction"
			name="appOrganizationForm" scope="request" input="edit"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appOrganizationForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppOrganization.jsp"
				redirect="false" />
			<forward name="list" path="/system/appOrganizationList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appOrganizations.html"
				redirect="true" />
			<forward name="viewer"
				path="/system/viewAppOrganization.html" redirect="true" />
		</action>
		<action path="/system/viewAppOrganization"
			type="com.xx.xx.system.webapp.action.AppOrganizationAction"
			name="appOrganizationForm" scope="request" input="list"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appOrganizationForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppOrganization.jsp"
				redirect="false" />
			<forward name="list" path="/system/appOrganizationList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appOrganizations.html"
				redirect="true" />
			<forward name="viewer"
				path="/system/viewAppOrganization.html" redirect="true" />
		</action>
		<action path="/system/deleteAppOrganization"
			type="com.xx.xx.system.webapp.action.AppOrganizationAction"
			name="appOrganizationForm" scope="request" input="list"
			parameter="method" unknown="false" validate="false">
			<set-property property="cancellable" value="true" />
			<forward name="edit" path="/system/appOrganizationForm.jsp"
				redirect="false" />
			<forward name="view" path="/system/viewAppOrganization.jsp"
				redirect="false" />
			<forward name="list" path="/system/appOrganizationList.jsp"
				redirect="false" />
			<forward name="search" path="/system/appOrganizations.html"
				redirect="true" />
			<forward name="viewer"
				path="/system/viewAppOrganization.html" redirect="true" />
		</action>
		<!-- Forwards to the mainMenu tile definition -->
		<!--  type="com.xx.xx.system.webapp.action.MainMenuAction"-->
		<action path="/mainMenu"
			type="org.apache.struts.actions.ForwardAction"
			parameter="/index.jsp" />
		<action path="/system/changePassword"
			type="org.apache.struts.actions.ForwardAction"
			parameter="/WEB-INF/pages/changePassword.jsp" />

	<action path="/system/users"
			type="com.xx.xx.system.webapp.action.UserAction"
			name="userForm" scope="request" input="mainMenu" roles="admin"
			parameter="method" unknown="false" validate="false">
			<forward name="list" path="/WEB-INF/pages/userList.jsp"
				redirect="false" />
			<forward name="edit" path="/WEB-INF/pages/userForm.jsp"
				redirect="false" />
		</action>
		<action path="/system/editUser"
			type="com.xx.xx.system.webapp.action.UserAction"
			name="userForm" scope="request" input="list" roles="admin"
			parameter="method" unknown="false" validate="false">
			<forward name="list" path="/WEB-INF/pages/userList.jsp"
				redirect="false" />
			<forward name="edit" path="/WEB-INF/pages/userForm.jsp"
				redirect="false" />
		</action>
		<action path="/system/editPass"
			type="com.xx.xx.system.webapp.action.UserAction"
			name="userForm" scope="request" input="mainMenu" parameter="method"
			unknown="false" validate="false">
			<forward name="list" path="/WEB-INF/pages/userList.jsp"
				redirect="false" />
			<forward name="edit"
				path="/WEB-INF/pages/changePassword.jsp" redirect="false" />
		</action>
		<action path="/system/editProfile"
			type="com.xx.xx.system.webapp.action.UserAction"
			name="userForm" scope="request" input="mainMenu" parameter="method"
			unknown="false" validate="false">
			<forward name="list" path="/WEB-INF/pages/userList.jsp"
				redirect="false" />
			<forward name="edit" path="/WEB-INF/pages/userForm.jsp"
				redirect="false" />
			<forward name="editPass"
				path="/WEB-INF/pages/changePassword.jsp" redirect="false" />
		</action>
		<action path="/system/saveUser"
			type="com.xx.xx.system.webapp.action.UserAction"
			name="userForm" scope="request" input="edit" parameter="method"
			unknown="false" validate="false">
			<forward name="list" path="/WEB-INF/pages/userList.jsp"
				redirect="false" />
			<forward name="edit" path="/WEB-INF/pages/userForm.jsp"
				redirect="false" />
			<forward name="editPass"
				path="/WEB-INF/pages/changePassword.jsp" redirect="false" />
		</action>

	</action-mappings>
	<controller nocache="true" inputForward="true" maxFileSize="2M" />
	<message-resources parameter="ApplicationResources" />
	<!-- ========== Validator plugin ===================  -->
	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property property="pathnames"
			value="/WEB-INF/validator-rules.xml,
                             /WEB-INF/validator-rules-custom.xml,
                             /WEB-INF/validation.xml" />
	</plug-in>
</struts-config>



机试环境是我们在做的项目清掉只留系统码表如上标示的代码上传到CVS服务器上
然后down至各们兄弟面试机器上新的工作空间
就这样子的题目,居然没一个做出来的
另说明几点:
1、看到配置文件也许有人会问,为什么同一个 action 类配了四个?
那是为权限管理方法
2、所有的的xxx.do链接都转为了xxx.html
如果面试的兄弟这两点不懂的话
其它没清代码的模块完全可参考
然而各们简历写着一至两年工作经验
四五个项目经验且熟悉 struts 的兄弟们就是没一个做出来说

唉,难道简历水分太多?
兄弟啊兄弟,简历可以加水分,但是技术和能力要 OK 啊
要不给个机会你又怎么样?

声明一下:我不是HR,也不是经理
反正招聘与我无关,只是面试者们走后我都看了下他们的简历以及做的情况

你可能感兴趣的:(apache,struts,面试,配置管理,招聘)