今天又开始重新学框架
Struts
Struts框架有两种方式,第一种要有form的,第二种是代理from的,
第一种写法:
<struts-config>
<data-sources />
<form-beans>
<form-bean name="AddStzActionForm" type="stz.struts.form.AddStzActionForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="AddStzActionForm"
input="/Dept.jsp"
name="AddStzActionForm"
path="/Dept"
scope="request"
type="stz.struts.action.AddStzAction">
<forward name="ok" path="/Result.jsp"/>
</action>
</action-mappings>
<message-resources parameter="stz.struts.ApplicationResources" />
</struts-config>
Action写法
public class AddStzAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
AddStzActionForm addStzActionForm =(AddStzActionForm)form ;
DeptBean dept=new DeptBean();
dept.setDeptNo(addStzActionForm.getDeptNo());
dept.setDname(addStzActionForm.getDname());
dept.setLoc(addStzActionForm.getLoc());
//dept.setDname("stz");
request.setAttribute("Dept", dept);
System.out.print(dept);
return mapping.findForward("ok");
//return super.execute(mapping, form, request, response);
}
第二种写法:
<struts-config>
<data-sources />
<form-beans >
<!--这里是内置包中的form-->
<form-bean name="DeptForm" type="org.apache.struts.action.DynaActionForm"></form-bean>
<!--这里用到了那个javaBean对象-->
<form-bean name="deptBean" type="Stz.Bean.DeptBean"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="addDeptForm"
name="DeptForm"
input="DeptForm"
scope="request"
parameter="method"
path="/deptAction"
type="Stz.DynStruts.DepAction">
<forward name="ok" path="/Success.jsp"></forward>
<forward name="fail" path="/fail.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
Action 写法
public class DepAction extends DispatchAction {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
return super.execute(mapping, form, request, response);
}
public ActionForward AddDept(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm dynForm = (DynaActionForm) form;
DeptBean dept = (DeptBean) dynForm.get("deptBean");
ActionMessages msgs = new ActionMessages();// 错误机制
if (dept.getDeptNo() <= 0) {
msgs.add("deptNo", new ActionMessage("addDept.deptNo.err"));
}
if ("".equals(dept.getDname())) {
msgs.add("dname", new ActionMessage("addDept.dname.err"));
}
if ("".equals(dept.getLoc())) {
msgs.add("loc", new ActionMessage("addDept.loc.err"));
}
if(!msgs.isEmpty()){
saveErrors(request, msgs);
return mapping.findForward("input");
}
request.setAttribute("Dept", dept);
return mapping.findForward("ok");
}
}
第一种与第二种基本相似啦,就是代理的就不用谢ActionForm啦,
现在在想,有了Struts就不用servlet了吧,
struts的原理也就是这样啦,通过webConfig.xml加载struts,然后通过请求到struts.config
中找到ActionForm,然后再到Action中处理业务,在根据不同的情况转到不同的页面。