当前位置:首页 » 操作系统 » struts源码解析

struts源码解析

发布时间: 2022-05-28 14:45:48

⑴ struts2原理

因为你用Struts2时候要在web.xml里配置Struts2的过滤器,应该是StrutsPrepareAndExecuteFilter。请求都会通过这个过滤器都会转给Struts2来处理。Struts2再应用自己的拦截器来交给Action处理。之前你配的过滤器是其它的而不是Struts2的。至于好处,那你应该了解Struts2有什么好处。Struts2核心组件是拦截器,真正要了解的话还需要深入学习。

⑵ 想看看struts2的源码,但是不知道从哪里开始,各位牛人指点指点

了通信,现在也上大三
我现在也是在自学java,学了2年,可以自己做作小项目,并且目前现在也在学日语。
我觉得既然你有2样特长,可以和我一样将来搞对日软件外包,为此你要有日语基础(2级非常好,说明你没有浪费时间),我现在正在为二级准备中,同时学习java,虽然你现在大三,但是全身心投入进来还是OK的,我建议你的路线是:java张孝祥视频教程-->《深入体验java web开发内幕》共2本,张孝祥说实话,讲得不错,我可不是托儿,卡发平台建议你初期用Jcreator,然后就是JBuilder或者eclipse(myeclipse)

看完这些以后,试着做做小项目。

没问题的,我看好你,呵呵。

一绪に顽张りましょう!!

⑶ Struts国际化详解

国际化 尽管国际化不是重点内容,但是也有必要了解它的使用。在struts2中国际化有三种级别:分别是针对某个Action的action级别,针对package的package级别,针对webapp的webapp级别。下面我们建立 struts2i18n 项目 来演示国际化在struts2中的使用。 1.action级别下的国际化 步骤一、首先是建立login.jsp及LoginAction,由于它们经常使用,在此省去它们的代码。 步骤二、建立资源文件,由于LoginAction在com.asm包中,所以我们应在com.asm包下我们建立两个资源文件:一个是中文LoginAction_zh_CN.properties、一个是英文LoginAction_zh_CN.properties。注意它们的名字相对固定,前面与Action的名字相同,后面是语言和国家代码。 英文资源文件内容如下: login_page=login page login_username=userName login_password=password login_sex=sex login_male=male login_female=female login_submit=login login_reset=reset login_suc=Welcome {0} 中文资源文件,需要特别注意:我们应使用Myeclipse自带的MyEclipse properties Editer编辑器来打开此资源文件,并在properties视图下进行编辑,这样它会把中文进行编码(我们切换到source视图下可以看到经编码后的中文)。 这一步非常重要,否则会出现乱码。 步骤三,修改login.jsp中的内容: <%@ page language="java" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <body> <s:text name="login_page"/><br> <s:label key="login_username"/> <s:form action="/login.action" method="post"> <!-- <s:textfield label="用户名" name="username" required="true" /> --> <s:textfield label="%{getText('login_username')}" name="username" /> <!-- <s:password label="密码" name="password" required="true"/> --> <s:password key="login_password" name="password" /> <!-- <s:radio list="#{1:'男',2:'女'}" value="1" label="性别" name="sex" /> --> <s:radio list="#{1:getText('login_male'),2:getText('login_female')}" value="1" label="%{getText('login_sex')}" name="sex" /> <s:submit key="login_submit" /> <s:reset key="login_reset"/> </s:form> </body> </html> 说明:对资源文件的引用,我们采取了两种方式:有的是通过在label中使用%{getText('资源文件中的key')}这样的形式,有的是通过key=资源文件中的key这种形式。需要注意在radio标签中list对资源文件的引用。另外需要注意: <s:text name="login_page"/><br> <s:label key="login_username"/> 它们的区别:前面是纯文本,后者是一个块。我们可以通过查看login.jsp的源码来证明。 步骤四、当我们直接访问login.jsp时会报错,因为在login.jsp中用到了资源文件,而资源文件又依赖于LoginAction,所以我们只能通过此Action来跳到login.jsp。但是使用包范围、全局范围的资源文件时,可以直接访问login.jsp文件实现国际化。操作步骤如下: 首先在LoginAction中增加一个方法: public String doGoLogin() { return LOGIN; } 随后再在struts.xml中配置如下内容: <package name="i18n" extends="struts-default" namespace="/"> <action name="login" class="com.asm.LoginAction"> <result name="success">success.jsp</result> <result name="login">login.jsp</result> </action> </package> 接着再编写一个link.jsp页面,内容如下: <a href="<%=request.getContextPath() %>/login!goLogin.action">登录</a> 直接访问Action中的方法格式:doX(大写)xxx ---- ActionName!x(小写)xxx.action 注意此方法和前面二.7中相关方法的区别。 我们通过此Action跳转到login.jsp这样便能成功访问到login.jsp页面。 步骤五、在success.jsp中使用资源文件,主要内容如下: <s:text name="login_suc"> <s:param value="%{username}"></s:param> </s:text> 说明:在前面的资源文件中,我们配置了login_suc=Welcome {0} ,其中{0}表示占位参数,这里我们使用<s:param>来给此参数赋值。 步骤六、测试:在ie的internet选项中改变语言实现国际化的访问。 2.配置package的资源文件 同样在建立com.asm包下建立两个资源文件(package级别的资源文件名必须以package开头):取名为:package_zh_CN.properties,它的内容为: pack=pack属性值 和package_en_US.properties,它的内容为: pack=packageAttributeValue 然后再在login.jsp页面中增加如下内容: <h4>测试包资源文件</h4> <s:text name="pack"></s:text> 这样便完成了package级别的资源文件配置,最后发布测试。 3.app级别的资源文件 在src目录下建立两个资源文件,取名为myapp_en_US.properties,它的内容为: a pp=appAttributeValue 和myapp_zh_CN.properties,它的内容为: 然后还需要在strust.xml中增加如下配置: <constant name="struts.custom.i18n.resources" value="myapp"></constant> 注意 :name是固定值,而value来自于这个资源文件的基名。 最后在login.jsp中增加如下内容: <h4>测试app级别资源文件</h4> <s:text name="app"></s:text> 这样便完成了app级别的资源文件配置,随后发布测试。 说明: action级的资源文件优先级别最高,app最低。Pack级别的资源文件可作用于同一个包,app级别的资源文件可作用于当前项目。 补充:在jsp页面中直接访问某个资源文件,struts2为我们提供了i18n标签,使用此标签我们可以在类路径下直接从某个资源文件中获取国际化数据,而无需任何配置: <s:i18n name="XXX"> --xxx为类路径下资源文件的基名 <s:text name=""> <s:param></s:param> </s:text> </s:i18n> 而如果要访问的资源文件在类路径的某个包下(如action或package级别的资源文件),可以这样访问: <s:i18n name="com/asm/资源文件基名">--com.asm为包名 4.使用资源文件的原理 我们建立ReadResourceFileTest类,代码如下: package com.asm; import java.util.Locale; import java.util.ResourceBundle; public class ReadResourceFileTest { public static void main(String[] args) { ResourceBundle rb=ResourceBundle.getBundle("com.asm.LoginAction", Locale.US); System.out.println(rb.getString("login_suc")); } } 补充:在Action类(必须继承自ActionSupport)中获取资源文件的值的方法,可以使用如下代码: String value = this .getText("资源文件的键名"); //获取资源文件的对应的值。如果想给资源文件中的占位符赋值,可以使用getText的重载方法。 ActionContext.getContext().put("XXX",value);//存放在request范围,供jsp获取此值 5.选择使用资源文件 其实在我们成功访问到login.jsp页面后,只要在地址栏中增加参数request_locale=en_US便可以正确切换到登录页面为英文。当然我们可以再链接根据此参数写这个资源文件的链接。当然我们也可借助一个新Action来实现,操作步骤如下:在login.jsp中增加如下代码: <a href="change.action?request_locale=zh_CN"> <s:text name="chinese"></s:text> </a> <a href="change.action?request_locale=en_US"> <s:text name="english"></s:text> </a> change.action对应的配置为: <action name="change" class="com.asm.ChangeLangAction"> <result>/login.jsp</result> </action> ChangeLangAction的主要代码如下: package com.asm; public class ChangeLangAction extends ActionSupport { public String execute() throws Exception { return SUCCESS; } } 以上是第一种方法, 特别要注意 ,由于使用了不同Action,所以要资源文件这时只有pack级别和app级别的才起作用,所以这时还应把action级别的资源文件内容增加到app级别的资源文件中去。下面使用第二种方法,原理基本和上面一样,只需在此ChangeLangAction中增加一个新的字段String lang及相应的get/set方法,再增加一个新的方法changeLang,代码如下: public String changeLang() throws Exception { Locale locale = null ; System.out.println(lang); if (lang.equals("zh")) { // 显示中文 locale = Locale.CHINA; System.out.println("======" + lang+locale); } else { // 显示英文 locale = Locale.US; } ActionContext.getContext().setLocale(locale); ServletActionContext.getRequest().getSession().setAttribute("WW_TRANS_I18N_LOCALE", locale); return SUCCESS; } 配置内容为: <action name="cl" class="com.asm.ChangeLangAction" method="changeLang"> <result>/login.jsp</result> </action> 在login.jsp中对应的链接为: <a href="cl.action?lang=zh"> <s:text name="chinese"></s:text> </a> <a href="cl.action?lang=en"> <s:text name="english"></s:text> </a> 这样操作后,当我们成功访问到login.jsp后,便可以点击链接来随意切换访问英文或中文页面。

⑷ 关于structs2的源码,哪位大神能看懂,麻烦给每行写上注释,急!!!!!

FileTable程序
package org.model;//包名称
public class FileTable {//类定义
private int id;//定义id私有变量
private String filename;//定义文件名私有变量
private String fileindex;//定义文件索引变量
private String format;//定义格式
public int getId() { // 定义读取id方法
return id; //返回id的值}
public void setId(int id) {//定义id赋值方法
this.id = id; //给id赋值
}
public String getFilename() {//定义读取文件名方法
return filename;//返回文件名
}
public void setFilename(String filename) {//定义设置文件名方法
this.filename = filename;//文件名赋值
}
public String getFileindex() {//定义得到文件索引方法
return fileindex;//返回文件索引
}
public void setFileindex(String fileindex) {//定义文件索引设置方法
this.fileindex = fileindex;//对文件名进行赋值
}
public String getFormat() {//定义得到格式方法
return format;//返回格式值
}
public void setFormat(String format) {//定义文件格式赋值方法
this.format = format;//对文件格式进行赋值
}
}

LYTable程序

package org.model;//包名称
import java.sql.Date;//引用库文件
public class LyTable {//类定义
private int id;//声明id私有变量
private int userId;//声明userid变量
private String title;//声明title私有变量
private String content;///声明content私有变量
public int getId() {;//定义返回id值得方法
return id;//返回id的值
}
public void setId(int id) {//定义id设置方法
this.id = id;//放回id的值
}
public int getUserId() {//定义得到userid的方法
return userId;//返回userid的值
}
public void setUserId(int userId) {//定义userid赋值方法
this.userId = userId;//设置userid的值
}

public String getTitle() {//定义得到title的方法
return title;//放回title的值
}
public void setTitle(String title) {//定义设置title的方法
this.title = title;//对title进行赋值
}
public String getContent() {//定义得到content值的方法
return content;//返回content的值

ublic void setContent(String content) {//定义设置content的值得方法
ontent = content;//对content的值进行修改

⑸ 风中叶老师的SPRING和struts2视频源码分析视频能分享一下不谢谢

我正在学。
在看langsin的风中叶。
感觉还不错。

里面带着两个PDF:
Practical.Apache.Struts2.Web.2.0.Projects.pdf
Manning.Struts.2.in.Action.May.2008.pdf
但是都是英文版。

在国内有人写了关于Struts2的书。

⑹ 求Struts的源码

版本struts-2.0.11.1: http://apache.mirror.phpchina.com/struts/binaries/struts-2.0.11.1-all.zip
版本struts-1.3.8:
http://apache.mirror.phpchina.com/struts/binaries/struts-1.3.8-all.zip
版本struts-1.3.9beta:
http://apache.mirror.phpchina.com/struts/binaries/struts-1.3.9-all.zip

⑺ 怎么使用Subversion来获取Struts 2的源代码

首先,Struts 2的源代码完全没必要用Subversion来获取,Apache网站上有直接下源码的链接。
如果你要用Subversion,一般需要在Eclipse里下一个插件叫Subclipse,然后新建工程"Project from SVN Repository...",把网站提供的Subversion地址(http ... 或svn://....)填上,等待代码下载就行了。
看你的图,估计是代码地址填的不对,换一个重新试试吧。

⑻ 求:《Java开源项目:Spring+Hibernate+Struts项目开发详解》的源码

这本书的网站不提供下载吗?
去 偶要雷锋看看吧

⑼ Struts是什么

Struts是最早的MVC开源框架,它是apache组织基于MVC模式开发的开源的单点控制的web应用框架(framework)。

Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。同样,软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。

⑽ Struts1和Struts2的源代码,给ActionForm赋值的问题

先通过getParameter方法然后赋值给actionForm的属性!

热点内容
宝利通550如何配置 发布:2024-10-28 09:23:11 浏览:441
清空数据库表格 发布:2024-10-28 09:06:31 浏览:797
新浪云服务器申请 发布:2024-10-28 09:03:00 浏览:864
为什么安卓系统是免费使用的 发布:2024-10-28 08:53:29 浏览:129
如何给汽车增加配置 发布:2024-10-28 08:41:58 浏览:965
C语言a减A 发布:2024-10-28 08:41:56 浏览:343
android手机蓝牙 发布:2024-10-28 08:31:04 浏览:674
为什么存储卡 发布:2024-10-28 08:26:11 浏览:12
ssr自动搭建脚本 发布:2024-10-28 08:20:05 浏览:462
加密支导线 发布:2024-10-28 07:59:55 浏览:855