- 浏览: 168139 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
gwill_21:
dwr.xml找不到怎么办,难道要自己手写dwr.xml?痛苦 ...
DWR框架 —— 用户注册验证 -
recoba7:
MLDN魔乐科技 Oracle学习笔记 (5) -
lanni2460:
呵呵 尽管现在才看到这个 但是我真的觉得 李老师 讲的很好呢 ...
严重声明,那些恶意诋毁MLDN及李兴华老师的其他培训机构统统走开 -
chian_xxp:
只要把功能实现了,代码结构合理了,代码性能提高了,该注意的注意 ...
业务、业务、业务。。。 -
wzpbb:
密码多少啊??? 给一下啊
MLDN 魔乐科技 Oracle 学习笔记(2)
一、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、处理乱码
输入中文,发现参数接收出现乱码
(1)Struts1.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> |
(2)Struts2.0处理乱码
只能通过资源文件的配置来处理
在struts.properties资源文件配置
struts.i18n.encoding=GBK |
i18n表示i到n中间18个字母的一个单词,意思为国际化
2、通过资源文件配置错误提示信息
(1)Struts1.2配置错误提示信息
在Struts的 资源文件中配置
而在ActionForm及Action中
相关推荐
学习struts2.0的新方式,捷径 学新技术的下载
Struts 2.0 API Struts 2 概述 Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大
Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...
最新 技术 ,很好 的东西 啊 事实上似睡非睡答复收费都受到
最新最实用的Web开发技术
本演示示例主要使用目前最新,最流行技术Struts2.1 +Spring 2.5.1+ibatis2.3整合开发而成,这与我以前发布的版本中最大特色是整合了Spring2.5.1中的注解功能和半自动化工具ibatis技术,这是本示例的两大特色,简化了配置...
Struts 版本: Struts2.0.11.1 JDK 版本: JDK1.5.0_12 J2EE 版本: Java EE5.0 在本系列教程中 Web 工程的上下文路径都是 struts2 ,如果在 Web 根目录有一个 index.jsp 文件,则访问路径如下: ...
Struts 1-2,帮助文档,及Jslt帮助文档,Webwork图书,可以帮助我们掌握新技术Struts2.0的帮手,并使我们了解和掌握Struts和Jstl标签库
快速涌现的新技术正在让每个人都大步向前,没有人会受到它的影响。 获得技术和轻松使用技术的能力已成为超越竞争对手的重要因素之一。 被大家认可的最大优势就是数字化。 通过单击鼠标即可提供服务,数字化使人们的...
1.2.4 apachestruts 1.2.5 spring框架和springmvc 1.2.6 javaserverfaces的诞生 1.3 javaserver faces设计目标 1.4 jsf应用程序架构 1.4.1 jsf请求处理生命周期 1.4.2 jsf导航模型 第2章 构建一个简单的javaserver ...
shopizer是一个利用Hibernate、Spring、Struts2、jQuery等技术开发的Web销售管理和电子商务内容管理系统(CMS)
本套视频教程从底层原理代码入手,循序渐进,透彻地向你展示了Spring 2.5的基本应用和各项新功能,清晰地讲解了如何使用Spring的最新和最优雅的方式来集成Struts,Struts2,Hibernate,JPA等流行的框架和技术。...
06 开源框架 Struts 1.x --> AJAX --> ECSide报表组件 --> Hibernate --> Spring --> Struts 2.0 --> AJAX框架(DWR、JSON、JQuery) 07 XML 基础语法 --> 解析(DOM/SAX/JDOM) 08 分布式开发 RMI --> EJB 3.0 --> ...
jar包:项目中除了使用了struts2,hibernate3.0和spring1.8以外(用spring2.0的包也可以.不能低于1.8的包.)还是用了junit,ajax,第三方的table组件.等等.所以需要下载相对应的包. 为了上传jar.我专门申请了一个网盘.所有...
1.2.4 apachestruts 1.2.5 spring框架和springmvc 1.2.6 javaserverfaces的诞生 1.3 javaserver faces设计目标 1.4 jsf应用程序架构 1.4.1 jsf请求处理生命周期 1.4.2 jsf导航模型 第2章 构建一个简单的javaserver ...
需要了解的新技术:1.struts 2.0 2.mysql 3.Jquery 4.团队开发软件:SVN 必考的10大问题:1.介绍一下spring 2.介绍一下struts 3.介绍一下hibernate 4.SSH的原理 5.SSH的总结 6.说说你对MVC模式的了解 ...
商通B2C网站管理系统商通购物网StShopV2.0(Struts2 Hibernate Spring MySQL)版 采用当前最流行的技术平台。 前台 1、会员功能:注册会员,修改会员资料; 登录系统后可以选购商品,放入购物车(修改购物数量、...
<%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. ...
• 架构技术: Struts2+Spring3+Hibernate4+EasyUI1.3+Spring JDBC+Highcharts报表+Jquery+Ehcache+Freemarker • 代码生成器:自动生成美观大方的前台页面及后台代码 • 查询条件生成器: 动态拼SQL,追加查询条件 •...
本套视频教程从底层原理代码入手,循序渐进,透彻地向你展示了Spring 2.5的基本应用和各项新功能,清晰地讲解了如何使用Spring的最新和最优雅的方式来集成Struts,Struts2,Hibernate,JPA等流行的框架和技术。...