java struct 简单案列_一个简单的STRUTS例子

一个简单的struts例子

1、生成一个新的Web应用,假设我们生成的应用程序的根目录在/Webapps/mystruts目录。

2、到http://jakarta.apache.org/下载Struts的安装文件

3、在/Webapps/mystruts目录下新建WEB-INF/lib目录从解压的文件中拷贝下列jar文件到/Webapps/mystruts/WEB-INF/lib目录。按照struts-example的lib文件夹应该是以下几个jar文件(或者直接从struts-example的lib文件夹拷贝过来),并将struts.jar填入classpath路径(编译Action需要引用):

commons-beanutils.jar

commons-collections.jar

commons-digester.jar

commons-fileupload.jar

commons-logging.jar

commons-validator.jar

jakarta-oro.jar

struts.jar

4、创建一个web.xml文件内容如下:<?xml version="1.0" encoding="UTF-8"?>actionorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xmldebug22action*.do/WEB-INF/struts-bean.tld/WEB-INF/struts-bean.tld/WEB-INF/struts-html.tld/WEB-INF/struts-html.tld/WEB-INF/struts-logic.tld/WEB-INF/struts-logic.tld

5、创建一个基本的struts-config.xml文件,并把它放在/Webapps/mystruts/WEB-INF/目录中,内容如下:<?xml version="1.0" encoding="UTF-8"?>

6、将tld文件拷贝到WEB-INF目录下,包括:

struts-html.tld

struts-logic.tld

struts-nested.tld

struts-tiles.tld

struts-bean.tld

7、建立logon.jsp,保存在mystruts目录下

8、建立main.jsp文件,保存在mystruts目录下:

!

9、在你的应用程序的WEB-INF目录下再建一个classes目录,在新建的这个classes目录下再建如下几个目录entity(用于存放ActionForm类)、action目录(用于存放Action类)、bussness目录(用于存放作为Model的业务对象类)。

10、建立ActionForm,编译后存放在entity目录下:package entity;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionMapping;import javax.servlet.http.HttpServletRequest;public class UserInfoForm extends ActionForm{private String username;private String password;public String getUsername() {return (this.username);}public void setUsername(String username) {this.username = username;}public String getPassword() {return (this.password);}public void setPassword(String password) {this.password = password;}

}

把如下代码添加到/webapps/mystruts/WEB-INF/struts-config.xml文件中:

第二步,我们建一个名为ApplicationResources.properties的文件(注意,名字要和struts-config文件中的名字相同),并把它放在/webapps/mystruts/WEB-INF/classes目录下。它在struts-config.xml的配置。#Application Resource for the logon.jsplogon.jsp.title=The logon pagelogon.jsp.page.heading=Welcome World!logon.jsp.prompt.username=Username:logon.jsp.prompt.password=Password:logon.jsp.prompt.submit=Submitlogon.jsp.prompt.reset=Reset#Application Resource for the main.jspmain.jsp.title=The main page

main.jsp.welcome=Welcome:

11、建立Action.package action;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionError;import org.apache.struts.action.ActionErrors;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.action.ActionServlet;import bussness.UserInfoBo;import entity.UserInfoForm;public final class LogonAction extends Action {public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {UserInfoForm userInfoForm = (UserInfoForm) form;//从web层获得用户名和口令String username = userInfoForm.getUsername().trim();String password = userInfoForm.getPassword().trim();//声明错误集对象ActionErrors errors = new ActionErrors();//校验输入if(username.equals("")){ActionError error=new ActionError("error.missing.username");errors.add(ActionErrors.GLOBAL_ERROR,error);}if(password.equals("")){ActionError error=new ActionError("error.missing.password");errors.add(ActionErrors.GLOBAL_ERROR,error);}//调用业务逻辑if(errors.size()==0){String validated = "";try{UserInfoBo userInfoBo=new UserInfoBo();validated =userInfoBo.validatePwd(username,password);if(validated.equals("match")){//一切正常就保存用户信息并转向成功的页面HttpSession session = request.getSession();session.setAttribute("userInfoForm", form);return mapping.findForward("success");}}catch(Throwable e){//处理可能出现的错误e.printStackTrace();ActionError error=new ActionError(e.getMessage());errors.add(ActionErrors.GLOBAL_ERROR,error);}}//如出错就转向输入页面,并显示相应的错误信息saveErrors(request, errors);return new ActionForward(mapping.getInput());}

}

这个action类中有两个错误消息键要加到ApplicationResources.properties文件中,清单如下:

#Application Resource for the LogonAction.javaerror.missing.username=

missing usernameerror.missing.password= missing password>

在struts-config.xml文件中定义Views与Controller的关系,也就是配置所谓的ActionMapping。它们在struts-config.xml中的位置是排在… 标签后,我们的登录程序的配置清单如下:

生成应用程序所需要的model组件,该组件是完成应用程序业务逻辑的地方,现在我的登录程序的业务逻辑很简单,就是判断用户是不是test并且其口令是不是test如果是就返回一个表示匹配的字符串"match",否则,就抛出出错信息。其代码清单如下:

package bussness;import entity.UserInfoForm;public class UserInfoBo {public UserInfoBo(){}public String validatePwd(String username,String password){String validateResult="";if(username.equals("test")&&password.equals("test")){validateResult="match";}else{throw new RuntimeException("error.noMatch");}return validateResult;}}

我们同样要将其表示错误信息的键值设置在ApplicationResources.properties文件中,清单如下:

#Application Resource for the UserInfoBo.javaerror.noMatch=

no matched user

最后让我们回顾一下我们都做了些什么:

1、建立应用程序目录,在目录下建立WEB-INF目录,在这个目录下在建立lib和classes目录

2、在WEB-INF目录下我们做如下操作:

建立web.xml文件

建立struts-config.xml文件

拷贝tld文件

3、在lib目录下拷贝struts的jar文件

4、在classes目录下建立类文件和ApplicationResources.properties资源文件。

5、将ActionForm,Action添加到struts-config.xml文件中

6、建立JSP文件

7、编译类文件,运行。

注:native2ascii -encoding GBK ApplicationResources.properties ApplicationResources_zh.properties可以将中文的资源文件转换成unicode,避免乱码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值