struts 2.0的简单应用
来源:互联网 发布:mac在线看视频卡 编辑:程序博客网 时间:2024/05/22 03:36
一、重点概要
1、重写struts的Filter
2、页面读取数据直接使用类的set/get方法。
3、注意页面中参数的名字
4、struts标签
二、配置项目的web.xml
Struts2.0所有的配置被整合在一个Filter里面,该Filter位于StrutsPrepareAndExecuteFilter,因此,在web.xml中应该这样声明:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
但是,该Filter一个问题,就是从页面传到后台的中文经过这个过滤器后会变成乱码,为了解决这个问题,需要重写这个过滤器,最简单的方法是写一个类继承StrutsPrepareAndExecuteFilter,代码如下:
package com.cstp.lifuqiang.filter;
//com.cstp.lifuqiang.filter.MyFilter
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
public class MyFilter extends StrutsPrepareAndExecuteFilter {
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
super.doFilter(req, resp, chain);
}
}
这时web.xml中相应的地方就改为:
<filter>
<filter-name>struts2</filter-name>
<filter-class>com.cstp.lifuqiang.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、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.cstp.lifuqiang.model包,确定需要输入的个人信息有“姓名”、“性别”、“地址”、“电话”,因此先定义一个JavaBean,名为Person.java
package com.cstp.lifuqiang.model;
public class Person {
private String name;
private String sex;
private String address;
private String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
四、配置struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="lfq" extends="struts-default" namespace="/">
<action name="check" class="com.cstp.lifuqiang.action.CheckAction"
method="check">
<result name="success">/WEB-INF/jspf/check.jsp</result>
</action>
</package>
</struts>
五、创建com.cstp.lifuqiang.action包,写CheckAction类,继承ActionSupport
package com.cstp.lifuqiang.action;
//com.cstp.lifuqiang.action.CheckAction
import com.cstp.lifuqiang.model.Person;
import com.opensymphony.xwork2.ActionSupport;
public class CheckAction extends ActionSupport {
private Person person;
public String check() {
return super.SUCCESS;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
六、页面
1、index.jsp 表单
<form action="check.action" method="post">
姓名:<input name="person.name" type="text" /><br />
性别:<select name="person.sex">
<option value="男">男</option>
<option value="女">女</option>
</select><br />
地址:<input name="person.address" type="text" /><br />
电话:<input name="person.phone" type="text" /><br />
<input type="submit" />
</form>
2、check.jsp
<body>
以下是你输入的信息
<hr />
姓名:<font color="red"><s:property value="person.name"/></font><br />
性别:<font color="red"><s:property value="person.sex"/></font><br />
地址:<font color="red"><s:property value="person.address"/></font><br />
电话:<font color="red"><s:property value="person.phone"/></font><br />
</body>
说明:
(1)注意index.jsp中各表单元素的name属性,比如:
<input type="text" name="person.name" />
在表单提交时,struts会在CheckAction类中寻找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属性。
(2)<s:property>标签作用是在页面上显示一个值。
同样,Struts在解析了表达式语言后,会调用getPerson().getName()方法,读出姓名的值,性别、地址、电话等都是类似的。
- struts 2.0的简单应用
- Struts的简单应用
- nanocontainer-struts 的简单应用
- 简单的Struts应用开发
- Struts的DispatchAction简单应用
- Struts验证框架的简单应用
- Eclipse+Struts+Hibernate的简单应用
- Struts中应用Struts-menu的简单例子
- Struts中应用Struts-menu的简单例子
- Struts框架简单应用
- 应用struts的validator验证的一个简单实例
- 简单struts应用执行流程
- ssh(struts+spring+hibernate)实现简单的插件化应用
- Struts框架的简单应用到用户登录
- 最简单的Struts程序(4)---Struts应用的国际化
- 最简单的Struts程序(4)---Struts应用的国际化(参考孙卫琴的struts一书)
- Struts 2.0的codebehinde插件应用简述
- Struts 2.0的codebehinde插件应用简述
- string 对迭代器的支持
- 救世与自救(一)
- 软件开发文档结构
- GNU Make手册阅读笔记(9)-- 第十、十一章
- C#中的yield关键字
- struts 2.0的简单应用
- TFTP路由器升级工具
- 劫色小助手
- 关于MyEclipse如何将那些黄线去掉
- struts 2.0之Filter
- 绝对经典:最幽默的小笑话
- [幽默网文]2009高考作文语录
- Oracle 插入中文乱码的解决方案
- Administrator Console repository配置