`
zisefeiniao
  • 浏览: 172465 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

Struts 2.0新技术哦

阅读更多

一、Struts2.0的概述

Struts1的工作原理:

       jsp à web.xml(*.do) à ActionServlet(struts-config.xml) à ActionForm(接收参数,validate验证) à 成功(Action) à 失败(input错误页) à jsp

 

Struts2.0是在WebWork框架基础上开发出来的,结合了一些Struts1框架的优点。

 

Struts2.0与Struts1的区别:

没有了ActionForm

       jsp à web.xml à FilterDispatcher à Action(接收参数,验证,并处理) à 成功(jsp成功页) à 失败(返回input错误页)

 

可以从Struts官方网站上下载struts2.0的开发包,开发包中包含以下内容:

apps:范例项目

docs:Struts2.0的文档

lib:Struts2.0的支持包

src:Struts2.0的源代码

 

二、Struts2.0的支持加入

 

Struts1.2

Struts2.0

jar包

struts.jar,commons支持包

struts2-core.jar,其他支持包

核心的配置文件

WEB-INF/struts-config.xml

WEB-INF/classes/struts.xml

tld标签库

WEB-INF/struts-bean.tld等

不需要单独加入,在核心jar包中已经保存了

资源文件

自定义的包下(保存错误信息,完成国际化)

可以建立多个,自己任意命名。

但其中必须包含一个struts.properties(完成struts2.0的一些默认配置,比如:编码过滤,文件上传大小限制,结合spring等)

web.xml

配置ActionServlet

配置FilterDispatcher过滤器

 

范例:

1、建立项目

 

 

2、加入Struts2.0的支持

(1)加入jar包

必须的基本jar包

 

 

(2)加入核心配置文件

将范例项目中的一个struts.xml拷贝到项目的src下,删除其他内容,保留框架。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

 

<struts>

    <!--<include file="example.xml"/>  -->

 

    <!-- Add packages here -->

</struts>

 

在“"http://struts.apache.org/dtds/struts-2.0.dtd">”处会有警告信息,并且在编写配置信息时没有了提示;

原因是在在外网“http://struts.apache.org/dtds/”中找,此处可以暂时先改成本地;

在struts2.0的核心jar包中找到struts-2.0.dtd文件,将该文件放到本地的某个文件夹下,此处我放到D:\struts2.0\下

修改核心配置文件:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "D:\struts2.0\struts-2.0.dtd">

 

<struts>

    <!--<include file="example.xml"/>  -->

   

    <!-- Add packages here -->

</struts>

 

(3)建立资源文件

手工在src下建立一个struts.properties资源文件

 

 

(4)加入标签库?

不需要单独加入,在核心jar包中已经保存了

在页面上如果需要使用标签,需要加入导入标签库的语句、

<%@ taglib uri="/struts-tags" prefix="s" %>

 

(5)在web.xml中配置过滤器

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

    xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   

    <filter>

       <filter-name>struts2</filter-name>

       <filter-class>

           org.apache.struts2.dispatcher.FilterDispatcher

       </filter-class>

    </filter>

    <filter-mapping>

       <filter-name>struts2</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

   

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

这里虽然配置的路径为/*,但默认提交到Action的路径为 *.action

(可以写*.action,但如果写*.action,UI标签就不能使用了?)

 

3、编写登陆页面

此处修改index.jsp为登陆页

注意:要使用struts2.0标签,需要导入标签

<%@ page language="java" pageEncoding="GBK"%>

 

<%@ taglib uri="/struts-tags" prefix="s" %>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>登陆页</title>

  </head>

 

  <body>

    <center>

    <s:form action="login.action" method="post">

        <s:textfield name="userid" label="用户名"></s:textfield>

        <s:password name="password" label="密码"></s:password>

        <s:submit value="提交"></s:submit>

        <s:reset value="重置"></s:reset>

<s:fielderror></s:fielderror>

    </s:form>

    </center>

  </body>

</html>

此处通过s:标签完成登陆的表单

 

4、建立Action

手动建立,即MyEclipse没有提供建立Struts2.0的Action的操作

建立一个Class,继承com.opensymphony.xwork2.ActionSupport类

(Struts2.0承担了Struts1.2的ActionForm和Action的综合功能)

 

(1)定义属性

a.用来接收参数:定义其setter方法

b.用来回填及向页面传递属性:定义其getter方法

(2)覆写validate方法

(3)覆写execute方法

 

package mldn.lin.struts.action;

 

import com.opensymphony.xwork2.ActionSupport;

 

public class LoginAction extends ActionSupport {

   

    private String userid;

   

    private String password;

   

    //生成setter方法,使Struts2.0可以通过setter对属性进行赋值

    public void setPassword(String password) {

       this.password = password;

    }

 

    public void setUserid(String userid) {

       this.userid = userid;

    }

 

    //生成getter方法,实现回填即向页面传递属性(request范围)

    public String getPassword() {

       return password;

    }

 

    public String getUserid() {

       return userid;

    }

 

    //覆写validate方法,实现表单验证

    public void validate() {

       if(userid==null || userid.trim().equals("")){

           this.addFieldError("userid", "用户名不能为空!");//userid与页面上文本框的name相同,这样可以自动提示错误信息

       }

       if(password==null || password.trim().equals("")){

           this.addFieldError("password", "密码不能为空!");

       }

    }

 

    //覆写execute方法,自动执行

    public String execute() throws Exception {

       // TODO Auto-generated method stub

       if(userid.equals("mldn") && password.equals("123")){

           return "suc";

       }else{

           this.addFieldError("loginFail", "用户名或密码错误!");

//         return "input";//方法1

           return ActionSupport.INPUT;//方法2

       }

    }

 

}

 

 

5、配置Action

在struts.xml中加入Action的配置

在struts.xml中action的配置都包含在package中,package用来区分不同的Action所映射文件夹路径,这样可以很容易的找到映射的不同路径的Action

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "D:\struts2.0\struts-2.0.dtd">

 

<struts>

    <!--<include file="example.xml"/>  -->

   

    <!-- Add packages here -->

    <package name="root" namespace="/" extends="struts-default">

    <action name="login" class="mldn.lin.struts.action.LoginAction">

        <result name="input">/index.jsp</result>

        <result name="suc">/suc.jsp</result>

    </action>

    </package>

</struts>

 

6、编写成功页

<%@ page language="java" pageEncoding="GBK"%>

<%@ taglib uri="/struts-tags" prefix="s" %>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>登陆成功页</title>

  </head>

 

  <body>

    <center>

    欢迎${userid }登陆成功!

    </center>

  </body>

</html>

 

7、部署测试

 

Struts2.0的UI标签无法使用(或者说很不好用),原因是由于无法控制显示格式和样式

显示错误信息通过 s:fielderror 进行显示,错误信息会自动换行并加入 “.”标志

 

Action中通过属性的setter方法接收参数并赋值,再调用validate方法进行数据验证,验证完成后,如果添加了错误信息,则返回input错误页,如果通过,则自动调用execute方法,进行业务逻辑处理后,通过return返回不同的页面,如果要向页面传递属性(Attribute),可以使用属性的getter方法进行传递,保存的范围为request范围。

 

三、Struts2.0新特性

 

1、处理乱码

输入中文,发现参数接收出现乱码

1Struts1.2处理乱码

编码过滤器

package com.mldn.ibm.filter;

 

import java.io.IOException;

 

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

 

public class EncodingFilter implements Filter {

    private String charSet;

    public void destroy() {

       // TODO Auto-generated method stub

    }

    public void doFilter(ServletRequest arg0, ServletResponse arg1,

           FilterChain arg2) throws IOException, ServletException {

       // TODO Auto-generated method stub

      arg0.setCharacterEncoding(charSet);

      arg2.doFilter(arg0, arg1);

    }

    public void init(FilterConfig arg0) throws ServletException {

       // TODO Auto-generated method stub

       this.charSet = arg0.getInitParameter("charset");

    }

}

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <filter>

       <filter-name>encoding</filter-name>

        <filter-class>com.mldn.ibm.filter.EncodingFilter</filter-class>

       <init-param>

           <param-name>charset</param-name>

           <param-value>GBK</param-value>

       </init-param>

    </filter>

    <filter-mapping>

       <filter-name>encoding</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <welcome-file-list>

       <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

</web-app>

2Struts2.0处理乱码

只能通过资源文件的配置来处理

struts.properties资源文件配置

struts.i18n.encoding=GBK

i18n表示in中间18个字母的一个单词,意思为国际化

 

2、通过资源文件配置错误提示信息

1Struts1.2配置错误提示信息

Struts 资源文件中配置

而在ActionFormAction

public ActionErrors validate(ActionMapping mapping,

           HttpServletRequest request) {

       // TODO Auto-generated method stub

       ActionErrors errors=new ActionErrors();

       if("login".equals(status)){

           if(memberid==null || memberid.trim().equals("")){

              errors.add("loginMemberidEmpty",new ActionMessage("loginMemberidEmpty.err"));

           }

           if(password==null || password.trim().equals("")){

              errors.add("loginPasswordEmpty",new ActionMessage("loginPasswordEmpty.err"));

           }else{

              password= new MD5Code().getMD5ofStr(this.password);

           }

       }

       return errors;

    }

//Action

ActionMessages errors=new ActionMessages();

errors.add("loginFail",new ActionMessage("loginFail.err"));

this.addErrors(request, errors);

 

//资源文件中

loginMemberidEmpty.err=*\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a!

loginPasswordEmpty.err=*\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a!

loginFail.err=*\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef!

//页面中,如果不加property则显示所有所有发生的错误

<span id="errMessage"><font size="-1" color="red"><html:errors property="loginMemberidEmpty" /><<span style=

0
1
分享到:
评论

相关推荐

    struts 2.0

    在Struts 2.0中,你可以看到许多Struts 1.0的改进,以及WebWork框架引入的新特性,这些改进使得Struts 2.0在处理复杂业务逻辑和用户交互时表现得更为出色。 1. **Action和Result**: 在Struts 2.0中,Action类是处理...

    Struts_2.0从入门到精通

    这一步骤至关重要,它包括从Apache官方网站下载Struts2.0包,以及在Eclipse等IDE中创建新的Web项目。通过将Struts2.0的库文件添加到项目中,确保所有的依赖都正确无误,以便后续的编码和调试工作能够顺利进行。 二...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    3. **拦截器**:Struts2.0使用拦截器来处理请求,拦截器链可以在不修改Action代码的情况下添加新的功能,如日志、事务管理等。 4. **OGNL表达式语言**:Struts2.0使用OGNL(Object-Graph Navigation Language)作为...

    struts2.0英文文档

    随着云计算、大数据等新技术的发展,Struts2.0 也在不断地进化和完善。未来可能会更多地与微服务架构相结合,为开发者提供更加灵活高效的开发体验。 ### 结语 Struts2.0 作为一款成熟的 Java Web 框架,不仅提供了...

    Struts2.0大结合

    Struts2.0是Apache软件基金会开发的开源框架,它继承了Struts1.x的优点,并引入了许多新特性。与Struts1.x相比,Struts2.0更加灵活,提供了更丰富的拦截器(Interceptor)机制,支持多种视图技术如JSP、FreeMarker等...

    struts2.0所有的JAR包

    Struts2.0是一个流行的Java Web应用程序框架,它基于Model-View-Controller(MVC)设计模式,旨在简化开发过程并提高代码的可维护性。这个上传的压缩包包含了Struts2.0运行所需的全部JAR文件,这些文件是开发基于...

    Struts2.0 入门学习资料

    Struts2.0的出现是对早期Struts1.x版本的重大升级,引入了许多新特性和改进,使得开发过程更为高效且灵活。 一、Struts2.0核心概念 1. 框架结构:Struts2.0的核心组件包括Action、Result、Interceptor、Dispatcher ...

    struts 2.0新手学习全材料

    Struts 2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建可维护性高、结构清晰的企业级应用程序。它由Apache软件基金会开发,是Struts 1.x的升级版,提供了更强大的功能和更好的性能。 ...

    struts2.0中文教程

    ### Struts2.0中文教程知识点详述 #### 一、Struts2.0简介与特点 ##### 1.1 Struts2.0背景及优势 ...通过上述知识点的学习,开发者可以深入了解Struts2.0的核心概念和技术细节,从而更好地应用于实际项目开发中。

    Struts2.0框架书籍

    此外,书中可能还涵盖了使用Struts2.0与其他技术的集成,如Spring、Hibernate等,以实现更全面的企业级应用开发。 开发事例教程部分,可能会包括创建简单的登录注册模块、文件上传下载功能、表单验证、国际化处理、...

    Struts2.0学习系列 包括webwork

    Struts2.0是Java Web开发中的一个著名框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的强大工具。Struts2.0是对初版Struts1.x的升级,吸取了Webwork框架...

    Struts2.0中文教

    本教程旨在帮助初学者逐步掌握Struts2.0的核心概念和技术,让你能够熟练运用这个框架构建功能丰富的Web应用程序。 首先,Struts2.0作为MVC框架,它的核心是Action类,它是业务逻辑处理的中心。每个Action对应一个...

    struts2.0最新实例2

    Struts2.0是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。这个框架的主要目的是为了简化Web应用开发过程,提高开发效率,提供强大的控制层来处理HTTP...

    Eclipse struts2.0可视化开发组件

    2. **创建项目:** 使用提供的模板创建一个新的Struts2.0项目。 3. **配置组件:** 通过可视化的界面配置Struts2.0的相关设置,如Action映射、拦截器等。 4. **代码生成:** 利用插件自动生成所需的代码,减少手动...

    Struts2.0学习系列

    在Struts2.0中,开发者可以利用Action类来处理业务逻辑,而视图部分则可以通过JSP或其他模板技术来呈现。框架提供了强大的拦截器(Interceptor)机制,使得开发者能够轻松实现事务管理、权限控制等功能。此外,...

    Struts 2.0中文教程

    这个中文教程旨在帮助开发者全面理解和掌握Struts 2.0的核心概念和技术,以便在实际项目中高效地构建Web应用程序。 Struts 2.0框架基于Model-View-Controller(MVC)设计模式,旨在分离业务逻辑、数据模型和用户...

    Struts2.0-study

    ### Struts2.0 基础入门及关键技术解析 #### Struts2.0 框架概述 Struts2.0 是一个基于MVC(Model-View-Controller)模式的开源Web应用框架,它源自于Apache软件基金会的Struts项目,并吸收了WebWork框架的优点。...

    struts2.0最新实例

    Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta Struts项目的一个版本,主要用于构建MVC(Model-View-Controller)架构的应用程序。本实例将带您深入理解Struts2.0的核心概念、配置...

    struts 2.0中文教程

    **开源优势**:作为开源软件,Struts 2拥有庞大的开发者社区,提供持续的技术支持和资源更新,同时也允许开发者根据项目需求进行定制和修改。 **改进点**: - **减少代码量**:相比Struts 1.x,Struts 2减少了对...

Global site tag (gtag.js) - Google Analytics