简述企业培训的流程
[真诚为您服务]
由于企业实际情况的不同,培训的模式也多种多样,但基本的要素都少不了计划、执行和评估这三项,因此,我们可以把培训系统分为方案制定、培训实施和效果评估三个阶段。
第一,培训要有详细的组合式方案。培训主管部门首先要了解企业的总体战略规划和在此基础上制定的人力资源规划,了解规划对企业不同层次人员培训的要求,确保培训和企业目标的协同性,使得培训能够满足企业的发展需要;其次培训的管理人员应当了解各部门的实际需要,结合规划的要求,共同确定培训的范围和内容;最后由培训主管部门制定出合理的培训计划,针对不同岗位和层次的员工提出不同的培训方案,满足不同层次和岗位的个性化需求。
第二,培训的实施始终关注实效性。由于实践与理论之间存在巨大的差距,因此在培训实施过程中培训师的选择非常重要,理论全面系统、实践经验丰富的培训师是最理想的情况。培训的内容应当根据不同层次人员和不同的阶段,根据需求度身定制。培训形式上,应根据成人教育的特点,更多地采用案例式和体验式的培训方法,加大受训者的参与程度。另外,除了对企业本身的培训资源充分开发和利用之外应当积极借助外部培训资源,引入更多更新的内容,实现企业和社会培训力量的有机结合。
第三,建立科学的培训评价体系。培训之后应对培训和实际效果从多个维度进行科学评价。员工的课堂效果评价对于培训师的改进和提高非常重要;员工对课程的评价为课程的修改和完善提供了直接的依据;员工对培训形式的评价有利于组织者找到更好的方式;企业对员工学习的实际效果进行评估和考核,并与激励体系挂钩,才能调动员工主动学习的积极性。及时的评估、总结和反馈,是做好培训工作必不可少的一环。
简述员工培训管理流程
他人作嫁衣裳 是企业培训工作的一种典型风险,让众多企业陷入员工培训的两难选择。这是爱汇网小编整理的简述员工培训管理流程,希望你能从中得到感悟!
简述员工培训管理流程
(一)长期计划
(1)确立培训目标--通过对培训需求的调查分析,将培训的一般需求转变为企业培训的总体目标,如通过培训来达到的各项生产经营目标和提高企业的管理水平。通过对上年度培训计划的总结及分析培训的特殊需要,可以确立需要通过培训而改善现状的特别目标,成为本年度培训的重点项目。
(2)研究企业发展动态--企业培训部会同有关的主要管理人员研究企业的生产营销计划,以确定如何通过培训来完成企业的年度生产经营指标。一项生产经营目标的达成往往取决于一个或几个员工是否正确地完成任务;而要正确地完成任务,又取决于员工是否具备完成任务所需的知识、技能和态度。通过检查每一项业务目标,确定要在哪些方面进行培训。企业培训部还要与有关人员共同研究企业的生产经营状况,找到需要改进的不足之处,寻求通过何种培训可以改善现状、实现培训的特别目标。
(3)根据培训的目标分类--围绕企业生产经营目标的培训应列入业务培训方案;围绕提高企业管理水平的培训活动则应列入管理培训方案。因此,培训方案的制订是针对培训目标,具体设计各项培训活动的安排过程。企业的业务培训活动可分为素质训练、语言训练及专门业务训练。企业的管理培训活动主要是班组长以上管理人员的培训,内容包括系统的督导管理训练及培训员专门训练等。
(4)决定培训课程--课程是培训的主题,要求参加培训的员工,经过对某些主题的研究讨论后,达到对该训练项目的内容的
掌握与运用。年度培训计划中,要对各类培训活动的课程进行安排,主要是列出训练活动的细目,通常包括:培训科目、培训时间、培训地点、培训方法等。注意培训课程的范围不宜过大,以免在各项目的训练课程之间发生过多的重叠现象;但范围也不宜过狭,以免无法真正了解该项目的学识技能,应主要以熟悉该训练项目所必需的课程为限。
培训课程决定后,需选编各课程教材,教材应包括以下部分:培训教材目的的简要说明;列出有关教材的图表;说明表达教材内容的方法;依照下列顺序编写教材:教材题目、教材大纲及时间计划、主要内容及实施方式和方法,讨论题及复习的方法和使用的资料。
(5)培训预算规划--培训预算是企业培训部在制订年度培训计划时,对各项培训方案和管理培训方案的总费用的估算。预算是根据方案中各项培训活动所需的经费、器材和设备的成本以及教材、教具、外出活动和专业活动的费用等估算出来的。
(二)短期计划
短期计划指针对每项不同科目、内容的培训活动或课程的具体计划。制订培训活动详细计划的步骤如下:
1.确立训练目的--阐明培训计划完成后,受训人应有的收效。
2.设计培训计划的大纲及期限--为培训计划提供基本结构和时间阶断的安排。
3.草拟训练课程表--为受训人提供具体的日程安排,落实到详细的时间安排,即训练周数、日数及时数。
4.设计学习形式--为受训人完成整个学习计划提供有效的途径,在不同学习阶段采用观察、实习、开会、报告、作业、测验等不同学习形式。
5.制订控制措施--采用登记、例会汇报、流动检查等控制手段,监督培训计划的进展。
6.决定评估方法--根据对受训人员的工作表现评估以及命题作业、书面测验、受训人员的培训报告等各方面来综合评价受训人员的培训效果。
员工培训的管理步骤
首先,与高层进行有效沟通,力争得到支持和认可。
老总的态度直接影响着企业培训工作的开展。对企业的发展状况、员工的素质进行缜密的分析,有理有据地指出企业培训工作的紧迫性,让老总意识到培训工作的严峻性。组织一次短期内能见效果的培训,用事实改变老总"培训无用论"的思想。对培训的作用进行全面的分析,转变老总急功近利的培训观念。老总的大力支持和示范效应,对公司的培训文化的建设尤为重要。
其次,做好职业生涯规划,激发员工受训的内部动机。
最有利于员工主动接受培训的动机不是来自于经济和金钱的刺激,也不是培训缺勤和考试不过的惩罚,而是员工自我实现的需求。考勤制度保证员工的出勤率,却保证不了员工听课的认真程度。培训考核和严厉惩罚能让员工避之不及,却不能激发其主动性。
为员工做好职业生涯规划,将培训与员工的个人发展联系起来,让员工看到培训对个人能力提升、知识储备和职位晋升等的作用,激发员工接受培训的内部需求,才能更好地保证培训的效果。
最后,培训内容符合企业和员工的实际,教学设计合理。
进行全面、系统的培训需求调查,分析企业发展要求、员
工现实能力,有针对性地选择培训课程,进而选择专业的培训机构和培训师。
所设置的企业培训内容既要满足企业和岗位的需求,又要落在员工的"最近发展区"。同时,采用系统化的设计战略,用专业的培训设计人员进行培训模式的设计,保证教学方式设计合理。
员工培训的工作难点
1、如何提高培训项目的针对性和实效性?这一点是关键,也是大方向。建议培训项目负责人和培训讲师都要多关注企业的问题所在,从实际出发,不要盲目跟风。市场上的培训课程很多也很杂,要善于选择,取我真正之所需。只有从实际出发,精心设计培训计划,才能为培训的实施打好基础。
2、培训项目的实施。培训计划制定后,实施也很重要。包括合适的培训机构或培训老师的选择、培训环节的落实以及相关服务流程的衔接。
3、培训项目的效果转化工作,尤其是投资比较大的重要的培训项目。如果培训成果没有得到明显的回报,很难让老板和员工对该培训项目给予最充分的肯定和后续培训的支持。
看了简述员工培训管理流程的人还看了:
1.员工培训管理制度(共3篇)
2.员工培训方案流程
3.简述员工培训计划 (共2篇)
4.员工培训管理制度(共3篇)
5.员工培训管理制度(共3篇)
6.员工培训管理制度(共3篇)
1.简要说明struts的工作原理和它的优缺点
MVC简介:
Model—模型:负责系统的状态和业务逻辑javabean
View—视图:负责系统的视图呈现jsp
Controller—控制: 负责系统的逻辑控制servlet
核心的原则:
Jsp页面不出现java代码,servlet不出现html的东西。
传统的MVC架构:
JSP-->VIEW
Servlet-->Controller
JavaBean-->Model
传统的流程图:
客户端的Request请求到达servlet,获取用户输入,set到model中,model负责取值也业务逻辑,然后由view层get数据更新view,发送到client。
Struts架构:
Jsp+struts标签库-->View
ActionBean |
ActionFormBean|-->Model
ActionServlet |
AactionMapping |-->Controller Struts流程:
Controller作为接受所有客户端请求的入口点,由ActionServlet来决定需要那个动作类来执行相应的操作,同时通知ActionFormBean来封装用户的表单输入,同时提交给ActionBean执行相应的业务逻辑,通过ActionMapping来决定需要反馈给Client什么。 注意的事情:
Struts的模型主要有Action Bean 和 ActionForm Bean ,Action中封装了简单的逻辑操作。较为复杂的逻辑放在JavaBean或者EJB中来完成,然后在Action中调用,因此Action是解决“做什么”,由其他的组件如(JavaBean)来解决“怎么做”的问题。
ActionForm封装了用户的表单输入,因此Action不用和表单交互,直接和ActionForm交互就可以了~
Struts标签和ActionForm的元素之间一一映射。
2.简述struts的工作流程,
大概逻辑如下(有些的可能不太全面,可以多看看书.):
struts1:
发布Struts Web服务时,根据web.xml初始化ActionServlet,ActionContext等内容. 在接到一个HttpRequest请求后,ActionServlet 根据struts-config.xml中的配置内容,将请求的参数传到对应的Formbean中,并设置session(开发中没有使用Formbean).然后根据请求中的Action参数,在struts-config.xml中查找指定的Action,并调用此Action来处理请求.根据Action的处理结果,会返回一个forward变量,此时通过mapping.findForward()查找出对
应的forward所标示的Action或者JSP页面(开发中没有转到另一个Action),将请求转到下一个处理.如果是forward指向JSP页面,则输出到前台.
Struts2:
(1)客户端提交一个HttpServletRequest请求(.action或JSP页面)
(2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等 (3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器 (4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个Request(一般根据URL后缀是否为.action来判断) (5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理.
(6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类.
(7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会根据配置文件加载相关的所有Interceptor拦截器) (8)Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器. (9) 最后ActionInvocation负责根据struts.xml中配置的result元素,找到与返回值对应的result,决定进行下一步输出.
3. struts学习心得 收藏 一,struts框架初始化基本流程:
1.Web服务器接到Request请求时,首先加载并初始化ActionServlet. 2.ActionServlet会读取struts-config.xml配置文件,把配置文件信息存入ActionMapping对象中.
二,struts框架响应客户请求的工作流程
1.查找ActionMapping实例.
2.查找ActionForm实例,如果没有,会创建一个ActionForm实例.把表单中的数据存入ActionForm中.
3.根据配置信息决定是否要进行数据验证.如果validate="true",则表示需要验证,要调用ActionForm中
的validate()方法.
4.如果validate()方法返回的是null或者数据验证成功则根据配置文件调用相应Action中的execute()
方法.execute()方法可以完成业务逻辑层的工作.比如操作DAO层进行CRUD.然后可以返回ActionForward
对象,决定返回给客户端哪个页面.
5.如果validate()方法返回了ActionMessage的ActionErrors对象,则表示表单验证失败.把错误信息返
回给客户端.
三,扩展ActionServlet类.
1.可以自己写一个类myActionServlet继承至ActionServlet.然后覆盖父类的
init()方法.但必须先调用
super.init();方法.之后再写自己需要的扩展功能.
2.如果使用了ActionServlet的子类.则必须要在web.xml中时行配置.
myActionServlet
mystruts.myActionServlet
myActionServlet
/action/*或者
*.do
以后再访问http://localhost:8080/xx/action/yy 就会把该请求转发给
myActionServlet处理.
四,在Struts中,担任MVC/Model 2控制器角色核心的是ActionServlet,所有
的请求都必须先通过它,
,当在Struts 1.1中,有关於请求的处理大部份已交由RequestProcessorActionServlet收到GET或POST
的请求,其doGet()或doPost()会呼叫process()方法来处理请求:
protected void process(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
RequestUtils.selectApplication(request, getServletContext());
getApplicationConfig(request).getProcessor().process(request,
response);
}
RequestUtils是个工具类,ActionServlet呼叫其selectApplication()方法,
藉由
request.getServletPath()来取得请求路径以选择应用程式模块来处理请求,之
后从
ApplicationConfig物件取得RequestProcessor物件,将使用者的请求委托它来进行处理。
您可以继承RequestProcessor,并改写其中的processXXXXX()方法来自定义请求的处理方式,如果您要
使用自己的RequestProcessor,要要在struts-config.xml中使用标签来定义,例如:
五,DispatchAction类
1.通常,在一个Action通过execute方法中只能完成一种业务操作.如果希望在同一个Action类中完成一
组相关的业务操作.如CRUD操作.那么就得使用DispatchAction.
自己写一个DispatchAction的子类来扩展它.不必覆盖execute()方法.而是根据业务操作来创建一些
这些方法的参数和返回值类型必须都和exectue()方法相同并抛出需要的方法.
异常.
在struts-config.xml中要写入
必须要有parameter参数.当用户请求DispatchAction时,要提供method请求参数,表明要调用
DispatchAction中的哪个方法.
如: http://localhost:8080/xx/cart.do?method=yy
六.LookupDispatchAction类
LookupDispatchAction也是DispatchAction的子类.在LookupDispatchAction中通常是处理一个表单中
有多个提交按钮的操作.
*********************************************************
1.struts控制器的组件
ActionServlet类
RequestProcessor类
Action类
2.内置struts Action类
DispatchAction类
IncludeAction类
ForwardAction类
LookupDispatchAction类
SwingAction类
struts Action 方法分发dispatch
2007-11-15 10:27:13
大 中 小
标签:struts action dispatchaction
在struts1中,我们知道在客户端发送“”时由前端控制器 url.doActionServlet分派给RequestProcessor来处理客户请求,最后分发给相应的应用程序控制器Action来处理业务,那么在一个应用程序中,如果有n个业务请求就需要n个action来处理,相应就需要n个action类文件,一个Action中只有一个execute方法,如果我们把某一个功能模块的所有方法放在一个Action类文件中,把不同的业务放在不同的方法中,并且由ActionServlet统一进行分发,岂不妙哉~(对~只需要该Action模块继承自DispatchAction,内部就可以定义多个方法实现crud)在struts1中DispatchAction给我们提供了解决方法。比如:
定义
public abstract class DispatchAction extends Action
这是一个抽象的Action,它会根据request 中的parameter来执行相应的方法。通个这个Action类可以将不同的Action集中到一个Action文件中来
Struts-config.xml:
在Action中要有相应的方法:
Public class TestAction extends DispatchAction{
public ActionForward delete(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
public ActionForward insert(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
public ActionForward update(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception
}
你就可以通过这样的方法来访问你的程序:
http://localhost:8080/myapp/saveSubscription.do?method=update
这样,我们就完成了action中方法的分发。可以大大减少action文件的数量。
一直以来,我个人不太喜欢DispatchAction的做法:
1、把action的方法名称暴露在界面上,给人的感觉总是有种“上身穿西装,下神是裸体”的感觉。
2、 如果阅读一个请求,需要从界面的请求开始看起,经历struts-config.xml
然后才能到对应的action方法,感觉太麻烦。
、 如果一个action中的请求中使用不同的form对象,在这样的程序中就感3
觉非常难受。
4、 DispatchAction使用execute做进一步的方法分发,如果我们使用DispatchAction,就不能使用execute方法了。
5、 如果方法的分发不是由界面决定的,只是由struts-config.xml决定的就感觉好多了。
尽管有一个LookupDispatchAction 可以根据界面不同按钮进行分发,感觉还不是很满意,struts1.2中又提出了MappingDispatchAction,这个action比较符合我的想法,但是MappingDispatchAction是继承自DispatchAction,骨子里还是DispatchAction,照样不能使用默认的execute方法。
有没有更好的办法既让执行默认的execute方法,又可以根据配置文件来执行parameter规定的方法呢,
也许有,我还不知道,我也不想去找了,干脆我来做一个,懒得费精力去搜索:
理论:
当客户端发送请求“url.do”到ActionServlet时,servlet会调用
RequestProcessor来处理客户端的请求,RequestProcessor类中有很多
processXXX方法:
ProcessPreProcess 最先调用的方法,决定struts是否继续向下处理。
processPath 获取客户端的请求路径
processMapping 利用路径来获得相应的ActionMapping
processActionForm 初始化ActionForm(如果需要)并存入正确的scope中
processActionCreate 初始化Action
processActionPerform 调用Action的execute方法
processForwardConfig 处理Action返回的ActionForward
其中processActionPerform 是调用Action的execute方法,我们重新
写这个方法利用反射就可以搞定我们想要的操作。
具体的代码如下:
public class DispatchRequestProcessor extends RequestProcessor {
//规定action中的方法参数类型,必须与execute方法的参数类型一致。
返回值必须是ActionForward
final Class[] types=new Class[]{ActionMapping.class,
ActionForm.class,
HttpServletRequest.class,
HttpServletResponse.class};
@Override
protected ActionForward processActionPerform(
HttpServletRequest request,
HttpServletResponse response,
Action action,
ActionForm form,
ActionMapping mapping) throws IOException, ServletException
{
try {
//从struts-config.xml中的parameter属性中获取需要调
用的方法名称,如果方法名不存在,就调用默认的execute方法。
String methodName=mapping.getParameter();
if (methodName==null || methodName.length()==0)
{
return action.execute(mapping, form, request, response);
}
//利用反射找到需要调用的action中的方法Method
Method method=action.getClass().getMethod(methodName, types);
//调用action中方法时准备的方法参数
Object[] args=new Object[]{
mapping,
form,
request,
response
};
//调用action中的方法,结果result就是ActionForward对象
Object result=method.invoke(action, args);
return (ActionForward) result;
} catch (Exception e) {
e.printStackTrace();
response.sendError(500,e.getMessage());
}
return null;
}
}
这个控制器就可以从配置文件中读取action中要调用的方法,如果方法
没有存在还可以自动调用execute方法。与界面没有任何关系,界面的请求还是普通的action请求,配置文件需要修改。
例如:
对应的Action变化是,不但有默认的execute方法,还可以有其他的方法。
public class UserAction extends Action {
//处理struts-config.xml中没有parameter属性的操作 ,select
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
}
public ActionForward add(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
}
public ActionForward update(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
}
}
这样,主要的地方是修改了控制器,别的地方都没有修改,就完成了方法的分发。 上面程序中使用的类只有DispatchRequestProcessor 是自己写的,其他的都在struts中有提供。
上面程序中的struts-config.xml中还需要把DispatchRequestProcessor 配置成控制器
百度一下
您查询的关键词是:struts2 中 filterdispatcher 作用 。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。
(百度和网页http://blog.csdn.net/woshifatong/archive/2010/09/12/5879670.aspx的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)
,
,
全站,
,
,
,
,
,
,
用户操作
[留言] [发消息] [加为好友]
订阅我的博客
woshifatong的公告
文章分类
存档
, 2010年09月(2)
struts2工作原理 收藏
Struts2工作原理
主要的包和类
Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。
以下是对各包的简要说明:
包名 说明
该包封装视图组件,Struts2在视图组件上有了很大加强,不仅增加了组件的属
性个数,更新增了几个非常有用的组件,如updownselect、doubleselect、org.apache.struts2. datetimepicker、token、tree等。 components
另外,Struts2可视化视图组件开始支持主题(theme),缺省情况下,使用自
带的缺省主题,如果要自定义页面效果,需要将组件的theme属性设置为simple。
该包定义与配置相关的接口和类。实际上,工程中的xml和properties文件的读org.apache.struts2. config
取和解析都是由WebWork完成的,Struts只做了少量的工作。
Struts2的核心包,最重要的类都放在该包中。 org.apache.struts2.dispatcher
该包只定义了3个类,他们是StrutsActionProxy、StrutsActionProxyFactory、org.apache.struts2.impl
StrutsObjectFactory,这三个类都是对xwork的扩展。
定义内置的截拦器。 org.apache.struts2.interceptor
实用包。 org.apache.struts2.util
只定义了一个类:DWRValidator。 org.apache.struts2.validators
提供freemarker、jsp、velocity等不同类型的页面呈现。 org.apache.struts2.views
下表是对一些重要类的说明:
类名 说明
该类有两个作用:
1、初始化 org.apache.struts2.dispatcher. Dispatcher
2、调用指定的Action的execute()方法。
这是一个过滤器。文档中已明确说明,如果没有经验,
配置时请将url-pattern的值设成/*。 org.apache.struts2.dispatcher. FilterDispatcher
该类有四个作用:
1、执行Action
2、清理ActionContext,避免内存泄漏
3、处理静态内容(Serving static content)
4、为请求启动xwork’s的截拦器链。
Action的代理接口。 com.opensymphony.xwork2. ActionProxy
生产ActionProxy的工厂。 com.opensymphony.xwork2. ctionProxyFactory
负责调用Action和截拦器。 com.opensymphony.xwork2.ActionInvocation
com.opensymphony.xwork2.config.providers.
负责Struts2的配置文件的解析。
XmlConfigurationProvider
Struts2的工作机制3.1Struts2体系结构图
Strut2的体系结构如图15所示:
(图15)
3.2Struts2的工作机制
从图15可以看出,一个请求在Struts2框架中的处理大概分为以下几个步骤:
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。
3.3Struts2源代码分析
和Struts1.x不同,Struts2的启动是通过FilterDispatcher过滤器实现的。下面是该过滤器在web.xml文件中的配置:
代码清单6:web.xml(截取)
struts2
org.apache.struts2.dispatcher.FilterDispatcher
struts2
/*
Struts2建议,在对Struts2的配置尚不熟悉的情况下,将url-pattern配置为/*,这样该过滤器将截拦所有请求。
实际上,FilterDispatcher除了实现Filter接口以外,还实现了StrutsStatics接口,继承代码如下:
代码清单7:FilterDispatcher结构
publicclass FilterDispatcher implements StrutsStatics, Filter { }
StrutsStatics并没有定义业务方法,只定义了若干个常量。Struts2对常用的接口进行了重新封装,比如HttpServletRequest、HttpServletResponse、HttpServletContext等。 以下是StrutsStatics的定义:
代码清单8:StrutsStatics.java
publicinterface StrutsStatics {
/**
*ConstantfortheHTTPrequestobject.
*/
publicstaticfinal String HTTP_REQUEST = "com.opensymphony.xwork2.dispatcher.HttpServletRequest";
/**
*ConstantfortheHTTPresponseobject.
*/
publicstaticfinal String HTTP_RESPONSE = "com.opensymphony.xwork2.dispatcher.HttpServletRespon
se";
/**
*ConstantforanHTTPrequest dispatcher}.
*/
publicstaticfinal String SERVLET_DISPATCHER =
"com.opensymphony.xwork2.dispatcher.ServletDispatcher";
/**
*Constantfortheservlet context}object.
*/
publicstaticfinal String SERVLET_CONTEXT = "com.opensymphony.xwork2.dispatcher.ServletContext";
/**
*ConstantfortheJSPpage context}.
*/
publicstaticfinal String PAGE_CONTEXT = "com.opensymphony.xwork2.dispatcher.PageContext";
/**ConstantforthePortletContextobject*/
publicstaticfinal String STRUTS_PORTLET_CONTEXT = "struts.portlet.context";
}
容器启动后,FilterDispatcher被实例化,调用init(FilterConfig filterConfig)方法。该方法创建Dispatcher类的对象,并且将FilterDispatcher配置的初始化参数传到对象中(详情请参考代码清单10),并负责Action的
执行。然后得到参数packages,值得注意的是,还有另外三个固定的包和该参数进行拼接,分别是org.apache.struts2.static、template、和org.apache.struts2.interceptor.debugging,中间用空格隔开,经过解析将包名变
成路径后存储到一个名叫pathPrefixes的数组中,这些目录中的文件会被自动搜寻。
代码清单9:FilterDispatcher.init()方法
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
dispatcher = createDispatcher(filterConfig);
dispatcher.init();
String param = filterConfig.getInitParameter("packages");
String packages = "org.apache.struts2.static template org.apache.struts2.interceptor.debugging";
if (param != null) {
packages = param + " " + packages;
}
this.pathPrefixes = parse(packages);
}
代码清单10:FilterDispatcher.createDispa
简述锡盟招聘的流程
招聘是人力资源管理的工作,当中过程包括招聘广告、二次面试、雇佣轮选等。负责招聘工作的称为招聘专员(Recruiter),他们是人力资源方面专家,或者是人事部的职员。 聘请的最后选择应该是用人单位,他们与合适的应征者签署雇佣合约。了解更多锡盟信息港的相关消息,请关注锡盟信息港http://www./。
流程
一、普通招聘流程
1.从需求开始
并不是高素质的人才都是你需要的,每个企业都应该首先搞清楚自己的需求,我们曾经犯过类似的错误,随意地进行招聘,把员工看成一种可增值的资源进行储备和积累,有一段时间甚至疯狂地去参加各种人才见面会,通过各种渠道进行招募。但是之后就碰到了一个问题,那就是失去了标准。因为没有确切的需求计划,导致招聘目标不明确,而单凭素质进行检验无疑是一件非常盲目而危险的事情,我们曾经在一次人才招聘会上挑选了至少10名被认为素质高的人员,但是由于公司并没有提供可供这些人员进行的确切项目,最后导致这些人员无事可做,更可怕的是这种现象还延续到老员工的身上,使他们感觉到非常不安,客观上起到了负面的作用,最后事实证明这一决策的错误之后,代价是所有招募到的人员全部在两个月之内离开了。因此在这里强调的是:不是每一个高水平高素质的人才都适合你的公司,也不是任何时候你都需要找到这样的人用来取代或威胁你现有的员工。看清楚你的需求,找到适合你的那一个,不能犯类似的错误,否则将为"鸡肋"之类的事情发愁。
2.招募渠道
如今招募员工的渠道很多,我们通常采用的有几种:
1)报纸电视
报纸电视是传统的媒体,不仅受众广,也是求职者主要的信息来源,因此到达率非常高,但是这种形式的弊端就是覆盖面广,你就必须面对大批蜂拥而至的求职者并且保持足够的耐心去挨个检验、填表、面试乃至到最后厌倦疲劳冒着失去千里马的危险把一大卷的应聘资料丢到碎纸机里去,或者选择做一个发疯的伯乐。当然,如果你的目的是想找到大众性的应聘者并且需要数量可观的情况下报纸电视肯定是一个不错的选择。
2)供需见面会
如今各个地方都有专业的人才市场,并且定期地进行供需见面,这种形式的好处是针对性强,还有就是可以由需求者与供给者直接见面,设置了第一道筛选的检验关口,提高了效率。但是这种形式显而易见的弊端就是你不得不面对许多求职若渴的人,而这些人往往是
鱼龙混杂,而且一般情况是鱼比龙多~需要你有一双慧眼(最好是孙悟空的那一双)在人群中一眼就能看到你未来的员工。另外的风险是你还必须看着手里拿着十几份个人简历的人在分发自己的材料,这种情况经常导致的是一种"马太效应",即多的越多,少的越少。好的单位能获得更多的选择权限,而差的单位就不可避免"门前冷落鞍马稀"的尴尬局面或者看上的人却被捷足先登的状况,也就无法怨天尤人了。双向选择,确实刺激。
3)网络招聘
对于专业技术人才来讲,从网上进行招聘无疑是一种明智的选择,原因有二,一是能上网的人一般都有比较高的个人素质和技能,适应现今社会的潮流(当然不能一概而论)。二是显示了招聘单位的实力和开阔的视野,能够采取网络招聘的单位往往在观念上已经超越了传统的企业,非常适合现代人尤其是年轻人的口味,一般来讲命中率是很高的,而且在初期接触中可以采取电子邮件和电话通讯的方式,合则见,不合便BYEBYE,别无二话,用不着在面试不合适之后还要挖空心思寻找一些既不刺伤对方自尊又能明确表达否定的委婉之辞,实在轻松愉快。著名招聘机构BeaconMan认为网络招聘是未来的发展趋势。
4)朋友介绍
这是最古老的一种猎头手段,但也是最有效的捷径。这里没有含情脉脉的试探,也不需要艰苦卓绝的磨合,你的目标就在那里,你所做的只是一次直截了当的谈判,对技能和人品的了解使你简单到一个词:待遇。但是切忌"水涨船高",在挖人的同时,自己的员工往往也面临着被挖的可能,在你给5000,我给6000的竞标下酝酿的往往是成本的飚升和老员工日益积累的不满,因此,挖人是一柄双刃剑,如何得心应手地使用是高手必须面对的问题。
在人力资源的组织上,进行合理的组合也是非常重要的。由于如今人员流动性强,为保证一只稳定的员工队伍,适当进行一些阶梯性组合是非常必要的。那专业人员来说,优秀的专业人员个性普遍比较强,在管理上有很大难度,且不确定因素也较多。因此除了做好他们的稳定工作之外,还应在其他人员配备上下功夫。如配合一些专业水平稍差的人员进行配合,以达到培训学习的作用,还可招募一些应届毕业生,他们虽然没有很强的专业能力和实践经验,但是有较高的素质和提升空间,性能价格比特别好,作为公司自己培养的人才是非常划算的。以上这几种人员的组合基本上就能使整个队伍保持一种较高的水准、较强的学习能力和较稳定的发展
3.关于面试
然后呢,然后一般就是面试了。
面试是一件很难的事情,如何不错杀一个,也不漏网一人,是一个很难掌握的平衡技巧。有的人很善于夸夸其谈,善于表现自己,但是并不一定金玉其内,有的人讷于言止,也并不一定败絮其中。这里很关键的是透过现象看本质。一般说来,参加面试的人往往会因为
牵涉自己的命运或将来而紧张,因此不妨先稳定其情绪,问一些求职者肯定早已准备的问题或闲聊一些话题,比如姓名、毕业学校、学的专业等等,待到其情绪稳定下来之后即可进入实质性的提问,这时的问题最好要出乎求职者的意外,且根据需要指定提问的节奏和内容,最好的方式是能找到求职者话语中的漏洞并用严谨的逻辑把求职者逼到不能自圆其说的地步,然后观察其应付突发事件的能力。在考察过程中,着重要考察的是以下几个方面:全面性(知识面)、警觉性(反应)、服从性、逻辑思维能力(推理和判断)、学习能力和人品。
4.最终决策
面试之后,面临的就是一个决策问题。综合获得的各种信息,基本上对参加面试的人已经有了初步的认识,如今就需要根据自己的具体需求进行筛选。在对参与者打分的同时,也要注意职位与求职者之间的匹配度,既不能让大马拉小车,又不能让小马拉大车。另外面试中的人品因素至关重要,这主要说的是求职者是否具备应有的职业人员素质,是否坦诚,是否肯正视自己的缺点和错误,这对未来的发展起着非常关键的作用。当然这之后就是电话通知,无论是不是已经录取对方,都要给对方一个明确的答复,并且强调感谢对方积极参与并支持了该公司的招聘活动,这对树立公司的良好社会形象很有帮助。
二、应届毕业生招聘一般流程
整个招聘过程可分为三个阶段,第一阶是准备阶段;第二阶段是招聘实施阶段;第三
[5]阶段是毕业生接收与跟踪阶段。
第一阶段:准备阶段,要做的工作有确定招聘职位和人数;成立招聘小组;联系招聘学校;准备相关资料。
1、确定招聘职位和人数:这是招聘应届生的前提,就是要招哪些职位的储备人才,要招多少名。只有明确了这两样,才能确定去哪些学校招聘,招聘哪些专业的学生。
2、成立招聘小组:招聘小组最好由人力资源部经理负责,甚至主管人力资源的副总负责。不要以为招聘应届生相对比较容易而忽视,其实际不然,就象前面我提到的,如果安排一个刚毕业两三年的招聘专员负责面试,学生们会以为企业不重视招聘工作,甚至他们会认为企业不重视人才,而对该企业打了负分。招聘小组主要职责是准备招聘前期资料、制定招聘计划和政策、招聘实施、面试等。
3、联系招聘学校:招聘小组根据公司批准的招聘计划、历年各校的接收毕业生情况、本年度各校生源状况和各校往年毕业生在企业的表现等情况,选定相应的高校,在招聘工作具体实施前,招聘小组将招聘计划发送给各高校的毕业生分配办公室,并与学校保持联系。
4、准备相关资料:包括制定招聘政策(包括招聘整体实施、招聘纪律、招聘经费等)、明确小组内部分工、准备面试相关的表格、准备企业宣传资料等。
第二阶段:招聘实施阶段,要做的工作有发布招聘信息;收集和筛选应聘资料;测试与面试;录用。
1、发布招聘信息:通常招聘信息的发布方式包括以下三种,供招聘人员选择:
在公司网站(包括各子公司网站)和校园网站上刊登招聘信息,介绍公司本年度应届毕业生的需求、用人标准、招聘程序、人力资源政策以及应聘方式等。
在校园内部张贴海报,宣传企业。
在校园举办招聘推介会,加强毕业生对公司的感性认识,并树立良好的公司形象,吸引潜在的应聘者(在校生)。招聘推介会所用资料,事先公司统一制订,并且在推介会演讲的人员必须事先经过培训。
2、收集和筛选应聘资料:对应聘人员的资料进行初审和筛选是招聘工作的重要一个环节,他可以迅速从求职者信息库中排除明显不合格者,提高招聘效率。同时,也可将所有求职资料进行记录归档,为人力资源部的事后分析工作提供素材。应届毕业生自己提供的资料也许有虚假成份,招聘人员需要通过多种渠道证实其真实性,比如到所在院系核查分数、奖励情况等。
3、测试与面试:
测试既要准确有效,又要简便宜行,建议以下几种测试方式,可根据具体情况选择:
专业知识测试。招聘小组需在出发之前准备好各专业的测试试卷。
分析能力测试。事先准备一些案例,要求几分钟以内答完。
无领导小组讨论。这是一种对应聘者集体面试的方法,对于应聘者较多,最适宜采用这种方法,每一次选5-7人为一组,每组20-30分钟的时间。通过让应聘者平等地集体讨论给定的问题,考察每个应试者的综合素质,主要包括:口头表达能力、处理人际关系技巧、灵活性、适应性、情绪控制、自信心、合作精神、性格特点等。
面试:有些职位人员可能通过测试能够判断,但是绝大多数职位还是需要借助面试来判断。面试前要准备好每个职位的面试考察要素、面试题目、评分标准、具体操作步骤等,并且统一培训面试人,提高评估的公平性,从而使面试结果更为客观、可靠,使不同应试者的评估结果具有可比性。由于应届毕业生没有工作经验,因此对他们的面试重点在于考察基本素质,即对潜质进行考察。比如第一位跟我打招呼的女学生灵活性很强,而后两位男女学生灵活性较差,他们没有意识到从接触招聘人员的第一时间起己进入了面试阶段。
4、录用:面试合格的人员可以确定为录用对象,根据应届生招聘的相关规定签订协议。
但是,不是签订协议后就万事大吉,还需要做好后期跟踪,因为优秀应届生很有可能被其他的企业相中,因此需要通过后期跟踪,打消他们另谋其他企业的念头。
第三阶段:应届生接收与跟踪阶段
应届生接收:人力资源部需要在网页上或者通过其它方式,通知毕业生公司位置,乘车路线;如有可能,需派人去车站出口设接待点。到企业后,要热情接待,安排好他们的食宿,毕竟他们对社会还有陌生感。同时,尽快安排入职培训,让他们了解企业,了解企业的运作,使他们更快的融入社会。
跟踪阶段:人力资源部要定期了解应届生的心态,听听他们的声音,及时给予帮助与引导。不能用对待社会招聘人员的方式对待应届生,他们需要更多的时间熟悉企业与本职工作,需要更多的理解与引导。企业始终要思考的一个问题是"如何让应届生在短期内完成从学校到企业的转变,"因为转变所花的时间越短,企业支付的培养成本越低,应届生也会越快为企业创造价值。
一般的手机设计公司是需要最基本有六个部门:ID、MD、HW、SW、PM、Sourcing、QA,
这其实也正表明了手机的设计流程。
1、ID(Industry Design)工业设计
包括手机的外观、材质、手感、颜色配搭,主要界面的实现与及色彩等方面的设计。 例如摩托罗拉"明"翻盖的半透明,诺基亚7610的圆弧形外观,索爱W550的阳光橙等。这些给用户的特别感受和体验都是属于手机工业设计的范畴,一部手机是否能成为畅销的产
品,手机的工业设计显得特别重要!
2、MD(Mechanical Design)结构设计
手机的前壳、后壳、手机的摄像镜头位置的选择,固定的方式,电池如何连接,手机的厚薄
程度。如果是滑盖手机,如何让手机滑上去,怎样实现自动往上弹,SIM卡怎样插和拔的安排,这些都是手机结构设计的范畴。繁琐的部件需要MD的工作人员对材质以及工艺都非常熟识。
摩托罗拉V3以 13.9mm的厚度掀起了手机市场的热潮,V3手机以超薄为卖点,因为它的手机外壳材质选择十分关键,所以V3的外壳是由技术超前的航空级铝合金材质打造而成。
可以这样说,特殊外壳材质的选择成就了V3的成功。
另外有个别用户反应在使用某些超薄滑盖手机的时候,在接听电话时总能感觉到手机前壳的
左右摇动,这就是手机结构设计出了问题,由于手机的壳体太薄,通话时的扬声器振动很容
易让手机的机身产生了共振。
3、HW(Hardware) 硬件设计
硬件主要设计电路以及天线,而HW是要和MD保持经常性的沟通。 比如MD要求做薄,于是电路也要薄才行得通。同时HW也会要求MD放置天线的区域比较大,和电池的距离也要足够远,HW还会要求ID在天线附近不要放置有金属配件等等。
可想而知一部内置天线的设计手机,其制造成本是会较一部外置天线设计的手机贵上
20-25%,其主要因素就是天线的设计,物料的要求与及电路的设计和制造成本平均都是要
求较高一些。
通常结构设计师(MD)与工业设计师(ID)都会有争论,MD说ID都是画家,画一些大家做不出来的东西,而ID会说MD笨,不按他们的设计做,所以手机卖得不好。所以,一款新的
手机在动手设计前,各个部门都会对ID部门的设计创意进行评审,一个好的ID一定要是一个可以实现的创意,并且客户的体验感觉要很好才行。当年摩托罗拉V70的ID就是一个很好的实现创意例子,后期市场的反应也不错,而西门子的Xelibri的创意虽然也很好,也可实现,但可惜的是最终客户的使用感觉并不好,所以一个真正好的创意,不但要好看,可
实现,而且还要好用。
另外HW也会与ID吵架,ID喜欢用金属装饰,但是金属会影响了天线的设计以及容易产生
静电的问题,因此HW会很恼火,ID/MD会开发新材料,才能应付ID的要求。诺基亚8800就是一个好例子,既有金属感,又不影响天线的接收能力。 4、SW(Software)软件设计
相对来说,SW是更容易为大家所理解,由于计算机的普及,让我们最大程度地接触了各种
各样的软件,手机操作界面的模式,大家经常看到的手机九官格操作菜单的实现,这都是
SW设计的范畴。
SW要充分考虑到界面的可操作性,是否人性化,是否美观的因素。SW的测试非常复杂,名目繁多,SW的测试不仅只是在寻找Bug,一致性的测试、兼容性的测试等都是非常重要
的项目,在目前"内容为主"的信息时代,软件才是手机的最终幕后支柱,硬件的驱动是软件
来实现,软件和硬件的工程师之间的冲突相信是不会比其它部门少,这种关系的绕来绕去,
所以便需要有PM(Project Management)项目管理来协调了。 5、PM(Project Management)项目管理
大规模公司的PM都分得非常细致,比如TPM (Technologly Of Project Management),即专门管技术的PM,而普通的PM,只管理项目的进度各协调工作,PM这个部门通常存在于那些自己设计,自己生产,自己销售手机的公司,AM(Account Manager)的职位恐怕大家都不陌生,作为客户经理,对公司内部是代表客户提出要求,对外则代表公司的整体形象,在
两者之间起着不可或缺的桥梁作用。
6、Sourcing资源开发部
资源开发部的员工要不停地去挖掘新的资源,如新材质、新的手机组件、测试器材等,当手
机开始试产时,他们要保证生产线上所需要的所有生产物料齐备。 手机进行小批量试生产,考察的不仅是软/硬件的成熟度,还包括考察生产工艺和生产的测
试技术,有些手机在进行到这个阶段时,却通过不了这一关的话,最后是以失败告终。于是
这款新设计的手机便不会出现在市场上了,而投入的开发资金和人力却付之流水,是一个极
大的损失。
7、QA(Quality Assurance)质量监督
QA部门负担起整个流程质量保证的工作,督促开发过程是否符合预定的流程,保证项目的
可生产性,有很多新设计的手机,就因为碰上了不可生产的某种因素而放弃了。 生产一部手机不是在实验室内做实验那么简单,一旦生产就是成千上万部,要保证每一部产
品的优质绝非一件简单容易的事。生产一部手机的样品和生产10万部手机完全是两码子事。
举例:中国的菜馆出的都是样品,麦当劳做的是产品,所以麦当劳可以做得很大,而且到目
前为止,中国的菜馆暂时还没有做到像麦当劳的规模是事实,所以手机设计公司才会建立起
很多流程来防止出现设计研制出来的手机却不能投入生产的情况。 不仅如此,一款手机的成功上市,能够卖个满堂红,仍然是需要与大众手机用户有亲密的接
触,并且经过用户的反馈以及快速的改善才能成功。
二、鲜为人知的手机测试项目
1、压力测试
用自动测试软件连续对手机拨打1000个电话,检查手机是否会发生故障。倘若出了问题,
有关的软件就需要重新编写了。所以有时候手机上会出现不同的软件版本存在的情况,其实
告诉大家一个秘密,手机的版本越多,这可以证明该手机在推出发售前,未经过充分的测试
工作便发售了。
2、抗摔性测试
抗摔性测试是由专门的Pprt可靠性实验室来进行,0.5m的微跌落测试要做300次/面(手机
有六个面)。而2m的跌落测试每个面需各做一次,还仿真人把手机抛到桌面,而手机所用
的电池,也要经过最少4m的高度,单独的向着地面撞击跌落100次而不能有破裂的情况出现。
3、高/低温测试
让手机处于不同温度环境下测试手机的适应性,低温一般在零下20摄氏度,高温则在80
摄氏度左右。
4、高湿度测试
用一个专门的柜子来作滴水测试,仿真人出汗的情况(水内渗入一定比例的盐分),约需进行30个小时。
5、百格测试(又称界豆腐测试)
用H4硬度的铅笔在手机外壳上画100格子,看看手机的外壳是否会掉下油漆,有些要求更
严格的手机,会在手机的外壳上再涂抹上一些"名牌"的化妆品,看看是否因有不同的化学成
分而将手机的油漆产生异味或者掉漆的可能。
6、翻盖可靠性测试
对翻盖手机进行翻盖10万次,检查手机壳体的损耗情况,是用一部翻盖的仿真机来进行,
它可以设置翻盖的力度、角度等
7、扭矩测试
直机用夹具夹住两头,一个往左拧,一个往右拧。扭矩测试主要是考验手机壳体和手机内面
大型器件的强度。
8、静电测试
在北方地区,天气较为干燥,手摸金属的东西容易产生静电,会引致击穿手机的电路,有些
设计不好的手机就是这么样突然损坏了。进行这种测试的工具,是一个被称为"静电枪"的铜板,静电枪会调较到10-15KV的高压低电流的状况,对手机的所有金属接触点进行放电的
击试,时间约为300ms-2s左右,并在一间有湿度控制的房间内进行,而有关的充电器(火牛)
也会有同样的测试,合格才能出厂发售。
9、按键寿命测试
借助机器以给设定的力量对键盘击打10万次,假使用户每按键100次,就是1000天,相当于用户使用手机三年左右的时间。
10、沙尘测试
将手机放入特定的箱子内,细小的沙子被吹风机鼓吹起来,经过约三小时后,打开手机并察
看手机内部是否有沙子进入。如果有,那么手机的密闭性设计不够好,其结构设计有待重新
调整。
此外,手机的测试还包含了更多更离奇的测项目,比如把手机放在铁板上打电话加以测试,
由于此时磁场发生了变化,什么情况都会发生,例如寻找不到SIM卡等。 用铁丝在手机底部连接器内拨来拨去,主要是要考虑到手袋内有锁匙的情况下,是否会令手
机出现短路的问题。
还有故意把充电器/电池反接测试,看看手机的保护电路设计是否能正常运作,靠近日光灯
打电话的测试,人体吸收电磁波比例的测试,以及靠近心脏起博器打电话的测试等等, 上述所提及的各种测试都是不可少的 。
|