Struts2.0 新手入门

struts2.0(一) Struts2.0 action地址转化 配置Struts的核心过滤器 创建struts.xml 编写Action Struts流程 Struct常量配置 struts.xml模块化 Struts的Action类 Action访问ServletAPI Action直接访问Servlet API 使用ServletActionContext访问Servlet API Struts2.0的动... 阅读详情

一、创建工程,比如Struts2

struts-2.0.6/lib中的的jar文件全部(为了后面的功能扩张)粘贴工程Struts2的lib目录中。

 二、           配置项目的web.xml     

Struts2.0所有的配置被整合在一个Filter里面,该Filter位于org.apache.struts2.dispatcher.FilterDispatcher,因此,在web.xml中应该这样声明:

<filter>

       <filter-name>struts</filter-name>

       <filter-class>

           org.apache.struts2.dispatcher.FilterDispatcher

       </filter-class>

    </filter>

   

    <filter-mapping>

       <filter-name>struts</filter-name>

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

</filter-mapping>

但是,该 Filter一个问题,就是从页面传到后台的中文经过这个过滤器后会变成乱码,为了解决这个问题,需要重写这个过滤器,最简单的方法是写一个类继承 FilterDispatcher,在src目录下创建com.filter包,在包中建立NewFilterDispatcher类,继承 FilterDispatcher,代码如下:

package com.filter;

 

import java.io.IOException;

 

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import org.apache.struts2.dispatcher.FilterDispatcher;

 

public class NewFilterDispatcher extends FilterDispatcher {

     private static String encoding = "GB2312";

 

        public void init(FilterConfig filterConfig) throws ServletException {

            super.init(filterConfig);

            String encodingParam = filterConfig.getInitParameter("encoding");

            if (encodingParam != null && encodingParam.trim().length() != 0) {

                encoding = encodingParam;

            }

        }

 

        public void doFilter(ServletRequest request, ServletResponse response,

                FilterChain chain) throws IOException, ServletException {

            request.setCharacterEncoding(encoding);

            super.doFilter(request, response, chain);

        }

 

   

}

这时web.xml中相应的地方就改为:

<filter>

       <filter-name>struts</filter-name>

       <filter-class>

           com.filter.NewFilterDispatcher

       </filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>GB2312</param-value>

        </init-param>

    </filter>

   

    <filter-mapping>

       <filter-name>struts</filter-name>

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

    </filter-mapping>

说明:

(1)该类是FilterDispatcher类的子类。

(2)该类有个成员变量,名为encoding,默认是“GB2312”。

(3)注意在web.xml中,<filter>标签里多了<init-param>标签,顾名思义,它的作用是初始化一个参数,里面定义了参数名和参数值。因此,在子类中,需要重写init方法,其中:

String encodingParam = filterConfig.getInitParameter("encoding");

   就是从web.xml中读出了参数名为encoding的值,然后赋给子类中的encoding成员。

(4)重写dofilter方法,加上:

 request.setCharacterEncoding(encoding);

然后再调用父类的dofilter方法,这样就完成了编码的转换。

(5)如果需要使用其它编码(如“UTF-8”等),只要改变<param-value>中的值即可。

这样就把struts2.0加入到工程中了。

 

三、Struts2.0的配置文件

除了在web.xml中配置以外,struts2.0还有几个自己的配置文件,其中最重要的两个是struts.properties和struts.xml,都要放到src目录下。

 

Struts.properties的原文件可以在struts-core-2.0.x.jar中找到,原名叫default.properties,将其解压出来,并改名为struts.properties,放到工程的src目录下,然后还需要修改里面的值。比如:

struts.locale=zh_CN

struts.i18n.encoding=GB2312

修改以后,这样struts才能认识中文。

再比如:

struts.action.extension=action

这是个默认值,意思说,struts的每个action的后缀都是.action。

Struts.xml文件用于配置所有的action,在后文有详细的配置方法。

四、创建JavaBean

创建com.bean包,确定需要输入的个人信息有“姓名”、“性别”、“地址”、“电话”,因此先定义一个JavaBean,名为Person.java,放到com.bean包中,它包括四个成员以及相应的get、set方法:

package com.bean;

 

public class Person {

    private String name;

    private String ***;

    private String address;

    private String phone;

    public String getAddress() {

       return address;

    }

    public void setAddress(String address) {

       this.address = address;

    }

    public String getName() {

       return name;

    }

    public void setName(String name) {

       this.name = name;

    }

    public String getPhone() {

       return phone;

    }

    public void setPhone(String phone) {

       this.phone = phone;

    }

    public String getSex() {

       return ***;

    }

    public void setSex(String ***) {

       this.*** = ***;

    }

}

   在index.jsp中设计表单(只包含<body>标签内的内容):

<body>

 <h4>请输入你的基本信息</h4>

    <form name="infoForm" action="go.action" method="POST">

        姓名:<input type="text" name="person.name" /><br>

        性别:<select name="person.***">

             <option value="男">男</option>

             <option value="女">女</option>

        </select><br>

        地址:<input type="text" name="person.address" /><br>

        电话:<input type="text" name="person.phone" /><br>

        <input type="submit" value="提交" />&nbsp;&nbsp;<input type="reset" value="重置" /><br>

    </form>

 </body>

创建com.action包,其中写MyAction.java文件,注意它是ActionSupport类的子类。ActionSupport类在com.opensymphony.xwork2.ActionSupport中。

package com.action;

 

import com.bean.Person;

import com.opensymphony.xwork2.ActionSupport;

 

public class MyAction extends ActionSupport {

    private Person person;

 

    @Override

    public String execute() throws Exception {

       // TODO Auto-generated method stub

       return SUCCESS;

    }

    public Person getPerson() {

       return person;

    }

    public void setPerson(Person person) {

       if(person == null) person = new Person();

       this.person = person;

    }

}

在struts.xml中声明该action:

<!DOCTYPE struts PUBLIC  

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

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

 

<struts>

    <package name="default" extends="struts-default">

   

       <action name="go" class="com.action.MyAction">

           <result name="success">/next.jsp</result>

       </action>

      

    </package>

</struts>

说明:

(1)MyAction类中定义了Person类的成员对象以及它的get、set方法。

(2)MyAction类的execute方法重写了父类的方法,其中的SUCCESS是父类中定义的常量,和struts.xml文件中<result>标签中的success相对应。

(3)index.jsp中,表单的action属性为“go.action”,与struts.xml中声明的action名字一致。

(4)注意index.jsp中各表单元素的name属性,比如:

<input type="text" name="person.name" />

在表单提交时, struts会在MyAction类中寻找getPerson()这个方法以及“person”这个成员变量,由于person是Person类的一个对 象,它本身还有一个name属性,因此struts还会自动调用该对象的“setName”方法,给name属性赋值,因此,在Person类的定义中各 成员变量必须有get、set方法。

我们把 “person.name”这样的语句叫做表达式语言(Expression Language,简称为EL)。它由XWork框架提供,XWork表达式语言的核心是OGNL(Object Graph Notation Language),OGNL是一种功能强大,技术成熟,应用广泛的表达式语言。用户在表单中输入的数据,会被保存到一个叫做“值堆栈” (OgnlValueStack)的地方中去,当业务操作完成,结果数据会通过表达式被获取、输出。实际上,在这个例子中,Struts在解析了该表达式 语言后,执行了getPerson().setName()方法,把页面上的值赋给person对象的name属性。

 

接着,写next.jsp文件,注意要在头部声明struts标签库:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

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

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

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

<html>

 <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'next.jsp' starting page</title>

   

   <meta http-equiv="pragma" content="no-cache">

   <meta http-equiv="cache-control" content="no-cache">

   <meta http-equiv="expires" content="0">   

   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

   <meta http-equiv="description" content="This is my page">

   <!--

   <link rel="stylesheet" type="text/css" href="styles.css">

   -->

 

 </head>

 

 <body>

      以下是你输入的信息:<br>

      姓名:<s:property value="person.name" /><br>

      性别:<s:property value="person.***" /><br>

      地址:<s:property value="person.address" /><br>

      电话:<s:property value="person.phone" /><br>

 </body>

</html>

其中,<s:property>标签作用是在页面上显示一个值。

同样,Struts在解析了表达式语言后,会调用getPerson().getName()方法,读出姓名的值,性别、地址、电话等都是类似的。

注:开发环境:myeclipse6.0+tomcat5.5+jdk1.5

Tomcat必须5.5以上,要不然会报filter错
struts2.0简单的例子 Struts2.0是struts1.0和WebWork2.2合并版本,集成了两大流行MVC框架的优点,对struts框架来说是一个大的提升,同时也更大程度地简化了开发人员的开发过程。 这个例子实现了一个简单的登陆效果,操作步骤如下: 1、首先,要从apache网站上下载struts2.0.11的完整包(http://struts.apache.org/downloads.html),解压后需要找到 阅读详情

相关推荐

Struts2.0开发手册:Java Web开发的MVC框架

本文还有配套的精品资源,点击获取 简介:Struts2.0是基于Struts1.x改进的Java Web MVC框架,本手册深入探讨其核心概念、配置及实践方法。内容包括Action和结果类型处理、拦截器的灵活性、OGNL表达式的使用、XML和注解配置选项、丰富的插件生态、全局异常处理、国际化支持以及单元测试友好的特点。开发人员通过阅读,可深入了解Struts2.0的高级特性...

weixin_42591413的博客 1034

Struts2.0的概述,总体总结

Struts2.0的概述,总体总结 [code] 一.Struts2.0的产生的背景 在Struts 1中设计中,虽然体现了MVC架构的的思想,并且以强有力的功能轰动一时,是jsp革新的里程碑,但 也存在着多种缺陷,从而导致了Struts2.0的诞生。 缺陷: 1.支持的表现层技术单一 Struts 1只支持JSP作为表现层技术,不提供与其他表现层技术,例如Veloci...

天天开心 250

Struts2.0基础入门项目指南

Struts2.0作为一款经典的MVC(Model-View-Controller)框架,自2007年问世以来,已广泛应用于企业级Web应用开发中。它以WebWork框架为核心,提供了强大的功能来简化企业级应用的开发。Struts2.0不仅继承了Struts1.x的易用性,还引入了诸多创新特性,如灵活的拦截器机制和对多种结果类型的支持。在本章中,我们深入解析了Struts2.0的核心组件,包括拦截器、Action类和结果类型的角色和功能。

weixin_42515340的博客 1075

struts 2.0

<INPUT id="__VIEWSTATE" type=hidden name=__VIEWSTATE> //<![CDATA[var theForm = document.forms[Form1];if (!theForm) { theForm = document.Form1;}function __doPostBack(eventTarge

zhuoyaoming的专栏 5401

struts2-2.2.1-all 版本

struts2-2.2.1-al 完整版本,目前这个版本不好找,分享给大家,原压缩包太大,重新给压缩成7z格式,7z,rar或360zip都可解压

structs2.0框架总结

对structs2.0框架的总结性说明。

## Struts2第一天 ##

## Struts2第一天 ## ---------- **Struts2的学习路线** 1. Struts2的入门:主要是学习Struts2的开发流程(Struts2的开发流程、常见的配置、Action类的编写) 2. Struts2的Servlet的API、参数封装和拦截器 3. Struts2的值栈和OGNL表达式 ---------- ### 今天的课程内

weixin_38026731的博客 391

struts2 struts2.0.9 最全包下载

struts2 struts2.0.9 包下载 挺全的 要用哪个自己挑

Struts2-2 Struts2.0概述与环境搭建

Struts2是一个用来开发MVC应用程序的框架,其提供了Web应用程序开发过程中的一些常见问题的解决方案……

Java名企面试吧 585

strust2.0常用包

strust2开发常用的几个jar包,如果需要。敬请下载。

struts2.0(高清晰)

— Web应用的发展 — Model 1和Model 2 — MVC思想 — MVC模式的优势 — 常用MVC框架及其特征 — Struts 1的基本结构及其存在的问题 — WebWork的基本结构 — Struts 2的起源 — Struts 2的框架架构 — Struts 2的标签库 — Struts 2的控制器组件 — Struts 1和Struts 2的对比

struts2.0 新手入门

一、           创建工程,比如Struts2struts-2.0.6/lib中的的jar文件全部(为了后面的功能扩张)粘贴工程Struts2的lib目录中。 二、           配置项目的web.xml      Struts2.0所有的配置被整合在一个Filter里面,该Filter位于org.apache.struts2.dispatcher.FilterDispa

皓星当空 3111

deepin启动异常处理

修复的命令在执行时会输出大量的修复信息,正常情况下修复完之后输入exit命令回车后,即可正常启动系统。

whxxiang的博客 4370

Struts 2.0全面分析

                                                                 Struts 2.0                                                                                                   struts 1---前端控制+应用控制+命令模

javakeikei的专栏 3790

非华为电脑也能用!华为电脑管家完美安装教程来了

GitHub 上有一个开源项目 ​****​,专门解决“非华为设备无法安装华为电脑管家”的问题。它通过智能模拟 + DLL 劫持技术,绕过官方对硬件型号的检测,让你在联想、戴尔、华硕甚至 DIY 主机上也能流畅使用华为电脑管家!⭐ 项目已获 ​700+ Stars​,社区活跃,持续更新,兼容性优秀!科技不该有围墙。如果你成功在非华为电脑上跑起了 PCManager,欢迎在评论区晒出你的设备型号 + 使用体验!也别忘了把这篇推文分享给同样“眼馋”华为生态的朋友 ~📱 ​关注我们。

程序员朱永胜 4925

C# 原生数字孪生的尝试

本文介绍了使用C#实现数字孪生的基本思路。首先从爱普生官网下载机器人3D模型,然后通过Blender创建并导出带动画的FBX模型。在WPF项目中,使用HelixToolkit.SharpDX等插件加载模型,通过Viewport3DX进行3D渲染。关键点是通过动画控制器接收真实设备信号来驱动模型动画,实现物理实体与虚拟模型的同步。文中提供了完整的代码实现,包括模型导入、动画播放控制等核心功能。该方法为构建数字孪生系统提供了一种可行的技术方案。

qq_33529095的博客 1333

Struts 2.0 解读笔记

 struts2 的demo 中的employee层可以清晰的暂时struts希望给开发者带来的架构--------------------------EmployeeAction    ^   |EmployeeDao    ^   |Employee --------------------------struts.xml 配置                     

纯月部落 8515

概率整形 Peobabilistic Shaping PS 第一节

概率整形概述 概率整形(Peobabilistic Shaping, PS)是一种针对于调制格式的优化技术,它为光通信通信提供了非常高的灵活性,但不会增加系统复杂性。尤其是光通信中的非线性问题会限制功率,使得PS就像为光通信量身定做的一样。 PS技术能够在不增加发送功率的前提下,获得高频谱效率和传输容量。2016年在使用PS技术的实验中实现了6600km单模光纤的65Tbit/s数据的传输。 到目前位置PS技术的研究主要集中在具有相干检测的单载波光纤传输。 概率整形的基本原理 概率整形技术就是通过在编码前

Explore_OuO的博客 8126
上一篇: native2ascii工具完全揭密
下一篇: 如何使用Spring来管理Struts中的Action
lw0121
博客等级 码龄19年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值