`
woshixushigang
  • 浏览: 575930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

struts1例子

 
阅读更多

最近一直再做struts2的项目,一年前做的struts1林业项目但是现在有些忘记了,重新整理下。

配置一个struts1有以下几个步骤:

1.导入依赖库,也可以用Myeclipse自带的模式增加struts1 功能。

2.编写struts-config.xml

3.配置web.xml。

4.进行编码工做。

 

struts-config.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!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 />
<!--  指明struts1 表单pojo 该pojo需要继承org.apache.struts.action.ActionForm-->
  <form-beans >
    <form-bean name="userLoginForm" type="com.yourcompany.struts.form.UserLoginForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
  
    <action
      attribute="userLoginForm"
      input="/userLogin.jsp"
      name="userLoginForm"
      path="/userLogin"
      scope="request"
      type="com.yourcompany.struts.action.UserLoginAction" 
      validate="true"
      >
      <forward name="failed" path="/userLogin.jsp" />
      <forward name="success" path="/userLoginSuccess.jsp" />
    </action>
<!--
<action>部分是说明action的属性。
Type    指定Action的类名,负责处理此次form表单请求的类 
Name    指定Action主力的ActionForm名,与<form-beans >元素的name属性匹配。
Scope   指定ActionForm存在的范围, (request, application) 
Input   指定包含客户提交表单的网页,如果ActionForm的Validate方法返回错误,则因该把用户
		请求转发到这个网页。
Validate 如果取值为true,则表示ActionServlet应该调用ActionForm的validate方法
Forward 就是Action的execute方法执行完毕后,把客户请求在转发给相应的页面。
-->

  </action-mappings>
<!--指定资源文件路径-->
  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>

 

web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

 

action

 

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.yourcompany.struts.action;

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.yourcompany.struts.form.UserLoginForm;

/** 
 * MyEclipse Struts
 * 徐士刚
 * 
 * XDoclet definition:
 * @struts.action path="/userLogin" name="userLoginForm" input="/userLogin.jsp" scope="request" validate="true"
 * @struts.action-forward name="failed" path="/userLogin.jsp"
 * @struts.action-forward name="success" path="/userLoginSuccess.jsp"
 */
public class UserLoginAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		UserLoginForm userLoginForm = (UserLoginForm) form;// TODO Auto-generated method stub
		if(userLoginForm.getUsername().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse")) 
		  { 
		   request.setAttribute("userName", userLoginForm.getUsername()); 
		   return mapping.findForward("success"); 
		  } 
		   
		  return mapping.findForward("failed"); 

	}
}

 

form

 

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.yourcompany.struts.action;

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.yourcompany.struts.form.UserLoginForm;

/** 
 * MyEclipse Struts
 * 徐士刚
 * 
 * XDoclet definition:
 * @struts.action path="/userLogin" name="userLoginForm" input="/userLogin.jsp" scope="request" validate="true"
 * @struts.action-forward name="failed" path="/userLogin.jsp"
 * @struts.action-forward name="success" path="/userLoginSuccess.jsp"
 */
public class UserLoginAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		UserLoginForm userLoginForm = (UserLoginForm) form;// TODO Auto-generated method stub
		if(userLoginForm.getUsername().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse")) 
		  { 
		   request.setAttribute("userName", userLoginForm.getUsername()); 
		   return mapping.findForward("success"); 
		  } 
		   
		  return mapping.findForward("failed"); 

	}
}

 

 

以下是struts1的国际化详解与上面的例子不一致

 

步骤1:配置struts国际化

在struts-config.xml中配置message-resources标签

<message-resource parameter="MessageResource"/>

其中的参数是国际化配置文件MessageResource.properties的文件名。

步骤2:提供国际化配置文件

中文:MessageResource_zh_cn.properties

英文:MessageResource_en_us.properties

源文件:resource.properties表示中文信息

在源文件resource.properties中硬编码中文信息
user.title=用户登录
user.username=用户
user.password=密码
user.button.login=登录

然后用java中提供的工具把这些信息转换为unicode放到相应国际化文件中。

MessageResource_zh_cn.properties文件中

user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55

MessageResource_en_us.properties文件中

user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login

步骤3:在jsp页面上用struts标签<bean:message>来读取国际化消息文本

引入标签:

<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> 

<form action="login.do" method="post">
  <bean:message key="user.username"/>:<input type="text" name="username"><br>
  <bean:message key="user.password"/>:<input type="password" name="password"><br>
  <input type="submit" value="<bean:message key="user.button.login"/>">
 </form>

 

bean:message中的属性key指的是国际化文件中的键。

一个local对应一个session

二,国际化的切换

jsp页面:

  <a href="changelang.do?lang=zh">中文</a>
&nbsp&nbsp&nbsp<a href="changelang.do?lang=en">英文</a>
 

添加一个Action:

public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  String lang = request.getParameter("lang");
  

//得到Locale
  Locale currentLocale = Locale.getDefault(); 
  if ("zh".equals(lang)) {

       //自定义Locale
   currentLocale = new Locale("zh", "CN");
  }else if("en".equals(lang)) {
   currentLocale = new Locale("en", "US");
  }

  //自己设置Locale
  //request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
  //调用struts中提供的方法设置Locale
  this.setLocale(request, currentLocale);
  return mapping.findForward("index");
 }

 

 配置国际化action:

<action path="/changelang"
    type="com.bjsxt.struts.ChangeLanguageAction"
  >
   <forward name="index" path="/index.jsp"/>
  </action>

 <message-resources parameter="res.MessageResources" />

 

res.MessageResources表示的是res包下的MessageResources文件。

三,动态信息的国际化

如果是与后台交互的数据,那么在国际化文件中就用占位符进行配置

resource.properties源文件:

user.login.success={0},登录成功
user.not.found=用户不能找到,用户名称=[{0}]
user.password.error=密码错误
user.login.error=登录失败

MessageResource_zh_cn.properties文件:

user.login.success={0},\u767b\u5f55\u6210\u529f
user.not.found=\u7528\u6237\u4e0d\u80fd\u627e\u5230\uff0c\u7528\u6237\u540d\u79f0=[{0}]
user.password.error=\u5bc6\u7801\u9519\u8bef
user.login.error=\u767b\u5f55\u5931\u8d25 

MessageResource_en_us.properties文件:

user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error

 

 

Action中的代码:

package com.bjsxt.struts;

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 org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

/**   
 * 用户登录的Action
 * @author Administrator
 *
 */
public class LoginAction extends Action {
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  LoginActionForm laf = (LoginActionForm)form;
  String username = laf.getUsername();
  String password = laf.getPassword();

  ActionMessages messages = new ActionMessages();
  try {
   UserManager.getInstance().login(username, password);
   
   //创建国际化消息文本
   ActionMessage message = new ActionMessage("user.login.success", username);
   //ActionMessage message = new ActionMessage("user.login.success", new Object[]{username});//其中Object数组表示的是占位符
   messages.add("loginSuccess1", message);

   ActionMessage message1 = new ActionMessage("user.login.success", username);
   messages.add("loginSuccess2", message1);
   
   //传递国际化消息文本
   this.saveMessages(request, messages);
   return mapping.findForward("success");
  }catch(UserNotFoundException unfe) {
   unfe.printStackTrace();
   
   //创建国际化消息文本
   ActionMessage message = new ActionMessage("user.not.found", username);
   messages.add("error1", message);
   
   //传递国际化消息文本
   this.saveErrors(request, messages);
  }catch(PasswordErrorException pee) {
   pee.printStackTrace();
   //创建国际化消息文本
   ActionMessage message = new ActionMessage("user.password.error");
   messages.add("error2", message);
   
   //传递国际化消息文本
   this.saveErrors(request, messages);
  }
  return mapping.findForward("error");
 }

}

 

一个ActionMessage表示一条国际化信息。

Action配置:

 

<message-resources parameter="res.MessageResources" />

<script type="text/javascript"></script>

 

 

分享到:
评论

相关推荐

    struts 1 例子

    在描述中提到的"struts1的例子"和"struts1标签使用的例子",我们可以深入探讨Struts 1的核心概念和常用组件。 1. **核心概念**: - **Action类**:在Struts 1中,Action类是处理用户请求的核心。每个Action类对应...

    Struts1例子

    这个"Struts1例子"很可能是为了演示如何使用Struts1框架来构建一个基本的Web应用程序,包括用户登录、注册等功能。下面我们将深入探讨Struts1的关键概念和技术要点。 1. **MVC模式**:Struts1遵循Model-View-...

    struts1编程例子

    ### Struts1编程示例详解:在MyEclipse中实现登录功能 在深入探讨如何在MyEclipse中使用Struts1框架构建一个简单的登录系统之前,让我们先对Struts1有个基本了解。Struts1是Apache软件基金会的一个开源项目,它提供...

    struts1小例子

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它基于Model-View-Controller(MVC)设计模式,为构建企业级Web应用程序提供了强大的支持。本篇将深入探讨Struts1的基础知识,以及如何通过实践来...

    Struts Struts1例子Struts注意事项

    本篇文章将深入探讨Struts1框架的基本用法、例子以及需要注意的事项。 首先,Struts1的核心概念包括Action、ActionForm、ActionMapping和DispatchAction等。Action是处理用户请求的业务逻辑组件,它接收并处理由...

    struts2简单例子

    这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识。 1. **MVC架构**: MVC模式是软件设计中的一个经典模式,它将应用逻辑分为三个主要部分:...

    struts简单例子(4)

    1. **配置文件**:主要包括`struts.xml`,这是Struts2的核心配置文件,用于定义Action、结果类型、拦截器等。在这里,你会看到Action的映射,以及它们对应的结果页面。 2. **Action类**:Action类是控制器的主要...

    典型的struts2例子

    本例子旨在帮助理解Struts2的基本概念、配置以及工作流程,通过实际操作来展示其核心功能。 首先,我们需要了解Struts2的核心组件。Controller部分由Struts2的Action类实现,它处理用户请求并调用相应的业务逻辑。...

    struts例子struts例子struts例子struts例子struts例子struts例子

    struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子

    struts项目例子

    struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts 项目 例子struts ...

    几个struts例子

    struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子struts例子

    struts2完整例子

    1. **MVC架构**:Struts2遵循MVC设计模式,它将业务逻辑(模型)、用户界面(视图)和应用控制(控制器)分离,提高了代码的可维护性和可重用性。在Struts2中,Action类扮演控制器角色,处理用户请求;结果映射决定...

    Struts2小例子

    1. **配置Struts2框架**: 在Struts2项目中,我们通常需要一个`struts.xml`配置文件,这是框架的核心配置文件,用来定义Action类、结果页面和拦截器。在这个小例子中,可能有如下配置: ```xml ...

    struts小例子

    这个"struts小例子"应该是博主在学习Struts框架过程中的一些实践项目和代码示例,非常适合初学者用来理解并熟悉Struts的核心概念和工作原理。 Struts框架的核心组成部分包括Action、ActionForm、ActionServlet、...

    struts2 例子和包

    在这个“Struts2 例子和包”中,我们将会探讨Struts2的核心概念、配置、以及如何在Eclipse环境中进行实际应用。 一、Struts2核心概念 1. **Action类**:Struts2的核心是Action类,它是业务逻辑处理的中心。每个HTTP...

    一个Struts的简单例子

    这个“一个Struts的简单例子”提供了一个基础的用户登录应用,非常适合初学者了解和学习Struts框架的基本用法。下面将详细解释这个例子中的关键知识点。 1. **MVC设计模式**: MVC模式是Web应用程序开发中常见的...

    struts2入门例子

    1. **Action配置**:在`struts.xml`中,你需要定义Action类,这通常是你的业务逻辑处理类。例如: ```xml &lt;result name="success"&gt;/success.jsp ``` 这里,`name`属性是访问Action的URL片段,`class`属性...

    struts2例子struts2例子

    它基于Apache软件基金会的Jakarta Struts项目,旨在提供比其前身Struts1更为灵活和强大的功能。 在深入理解Struts2之前,我们先来解释一下MVC设计模式。MVC是一种将业务逻辑、数据和用户界面分离的设计模式,使得...

Global site tag (gtag.js) - Google Analytics