下面我们开始创建Struts的程序,我们在WEB-INF下双击打开struts-config.xml文件,在视图中的空白处右键--New--"Form,Action and JSP":
弹出一对话框,如下图:
此步是创建Form,在User case中输入user,在下面添加Form的属性(点"Add"按钮添加),然后我们我们选择“JSP”选项卡,如下图:
按图中配置即可,创建的jsp文件会出现在WebRoot/jsp文件夹中(应该在WebRoot下创建个jsp文件夹),
然后点击"Next"进入下一步,如下图:
此步是创建Action,在上面输入Path,因为是登陆,这里我们输入"/login",然后确定Type中是com.zgh.struts.action.LoginAction然后点击“Forwards”选项卡,如下图:
按图中的步骤一步一步输入(或选择),先点击“Add” (第2步)在弹出框中的“Name”中输入“success”(第4步),然后点"Browser"按钮(第5步),选择一个登陆成的的页面(第6步,这个页面应该先建好,后面会给出代码),然后点OK(第7步),然后点"Add"按钮(第8步),然后点“Close”关闭(第9步),然后点"Finish"完成(第10步)。完成。在struts-config.xml中生成视图如下:
以下是struts-config.xml的代码,如下:
<! DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd" >
< struts-config >
< data-sources />
< form-beans >
< form-bean name ="userForm" type ="com.zgh.struts.form.UserForm" />
</ form-beans >
< global-exceptions />
< global-forwards />
< action-mappings >
<!-- 把type="com.zgh.struts.action.LoginAction" 改成:type="org.springframework.web.struts.DelegatingActionProxy" -->
<!-- 这样才能合Spring整合,把控制权交给Spring -->
< action
attribute ="userForm"
input ="/jsp/login.jsp"
name ="userForm"
path ="/login"
scope ="request"
type ="org.springframework.web.struts.DelegatingActionProxy" >
< forward name ="success" path ="/jsp/loginSuccess.jsp" />
</ action >
</ action-mappings >
< message-resources parameter ="com.zgh.struts.ApplicationResources" />
<!-- 添加Spring的插件 -->
< plug-in className ="org.springframework.web.struts.ContextLoaderPlugIn" >
< set-property property ="contextConfigLocation" value ="/WEB-INF/applicationContext.xml" />
</ plug-in >
</ struts-config >
注意下上面的action元素的type属性,这是与Spring整合的一种方法,还有后面的plug-in是必须的,而且一定要写到最后,Struts的配置文件必须按先后顺序。
下面是LoginAction.java代码:
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
/** */ /**
* @author zhu国辉
*/
package com.zgh.struts.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.zgh.spring.service.IUserLoginService;
import com.zgh.struts.form.UserForm;
/** */ /**
* MyEclipse Struts
* Creation date: 01-07-2008
*
* XDoclet definition:
* @struts.action path="/login" name="userForm" input="/jsp/login.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="/jsp/loginSuccess.jsp"
*/
public class LoginAction extends Action ... {
/**//*
* Generated Methods
*/
private IUserLoginService userLoginService;
public void setUserLoginService(IUserLoginService userLoginService) ...{
this.userLoginService = userLoginService;
}
/** *//**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) ...{
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
List users=userLoginService.getUser(userForm.getUsername(), userForm.getPassword());
if(users!=null && users.size()>0)...{
return mapping.findForward("success");
}
return mapping.getInputForward();
}
}
下面是login.jsp的代码:
<% ... @ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<% ... @ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
< html >
< head >
< title > JSP for UserForm form </ title >
</ head >
< body >
< html:form action ="/login" >
username : < html:text property ="username" />< html:errors property ="username" />< br />
password : < html:password property ="password" />< html:errors property ="password" />< br />
< html:submit />< html:cancel />
</ html:form >
</ body >
</ html >
以下是loginSuccess.jsp代码:
pageEncoding="GBK" %>
<% ... @ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<% ... @ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=GBK" >
< title > Insert title here </ title >
</ head >
< body >
亲爱的 < bean:write name ="userForm" property ="username" /> :
< br />
欢迎您!
</ body >
</ html >