struts2自学学习文档

作者在 2010-07-31 09:03:18 发布以下内容
国际化的应用
java语言对国际化的支持
1,ResourcedBu
2,Locale
获得java对国际化的支持
Locale[] locales=Locale.getAvailableLocales);
for(Locale locale:locales){
locale.getDisplayCountry+locale.getCountry
}
~~~~~~~~
getCountry()返回此语言环境的国家/地区代码
getDisplayLanguage()  返回适合向用户显示的语言环境语言名。
getLanguage()返回此语言环境的语言代码
```````
struts2中的文件
类名_国家_国家名.properties
heill_en_US.properties
heill_zh_CN.properties
heill_en_US.properties
将中文转成unicode码native2ascii
~~~~~~~~~~~~~~
测试上面的代码
  Locale locale=Locale.getDefault();//Locale.US//得到本地的文件
  ResourceBundle bundle=ResourceBundle.getBundle("heill",locale);//读取文件
String value=bundle.getString("key");//通过key来得到值
hell=\u4F60\u4EEC\u597D\u554A {0}
其中的0是为了动态得到值
java.text.MessageFormat.format("被格式化的字符串",new Objec[]{"值"});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
strus2的应用
新建一个message_ZH_cn.properties
        message_en_US.properties
在页面中写入
    <s:text name="Message里面的key"/>
   或<s:i18n name="文件名字">
<s:text name="key"></s:text>
</s:i18n>
<s:i18n>是在指定的文件在去拿值
在struts.xml文件中增加
<constant name="struts.custom.i18n.resources" value="message"></constant>
<constant name="struts.i18n.encoding" value="gbk"></constant>
ActionSupport.getText(key)//是到国际化的值
~~~~~~~~~~~~~
动态获得
List list=new ArrayList();
listadd(要传入的参数);
this.addActionError(this.getText(key),list);
或者this.addActionError(this.getText(key),new String[]{要传入的参数});
~~~~~~~~~~~~
在xml中国际化
<message key="key"></key>
~~~~~~~~~~~~~~~~~~~~~~~`
包级别的(在要验证的包里面新建)
取名package_zh_CN.properties
~~~~~~~~~~~~~~~~~~~
类级别的提示信息
类名_zh_CN.properties
~~~~~~~~~~~~~~~~~~~~~~~
jsp页面信息国标化
在textfield里面写加一个key="key"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
深入探索
可以重写struts.properties文件
如:struts.i18n.encoding=gbk
struts.saction.extension=do修改提交的方式为。do
struts.configuration.files=truts-default.xml,struts-plugin.xml,struts.xml修改配置struts的默认文件
也可以在web.xml中写入
<param-name>struts.action.extension</param-name>
<param-value>abcd</param-value>
~~~~~~~~~~~~~~~~~~~~~~
struts.xml中package 中有namespace="/hello"修改路径前缀
action中应该写/hello/login.action,action是一定要写的
在struts.xml中增加另外的xml文件struts2.xml
<include file="struts2.xml"></include>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
属性驱动:action中要写表单中的所有的name,并生成get和set方法
对象驱动:要实现ModelDriven<对象名>,
  private User user=new User;
  public User getModel(){
  return user;}其它的不变
~~~~~~~~~~
出错信息放在指定的位置
<s:fielderror><s:param>username</s:param>
<s:fielderror>
~~~~~~~~~~~~~~~~
表单重复提交
<s:token></s:token>
在web.xml中加上
<interceptor-ref name="token"></interceptor>
还要加上默认的过滤器
invalid.token
<result name="invalid.token">/回来相应的页面</reslut>
如果在页面中要显示出错信息用<s:actionerror></s:actionerror>
默认的信息key是struts.messages.invalid.token=
~~~~~~~~~~~~~~~~~~
jakarta/cactus工具
mock工具都是单元测试的工具
~~~~~~~~~~~~
得到session
Map map=ActionContext.getContext().getSession();
map.put("usd",值);
得到request
ActionContext.getContext().put("dn",值);
//~~~~~~~~~~~~~~~
ServletContextAware接口
ServletRequestAware接口
ServletResponseAware接口
如果要使用以上接口,action得实现这些接口
重写里面的方法之后
在新建一个这样的接口属性,
private HttpServletRequest request;
public void setServletRequest(HttpServletRequest request){
this.request=request;
}
~~~~~~~~~~~~~~~~~~~
HttpServletResponse response=ServletActionContext.getResponse();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
动态方法调用(dynamic method invocation)
1,在jsp中增加action中写login!login1.action
前面的login是表示web.xml中请求
后面的login1是表示action中的方法名称
2,在xml文件中加method="action的方法名"
~~~~~~~~~~~~
通配符
*代表任何字符method={0}
<action name="*Login" action="" method="{1}"></action>
{1}可以表示action里面要执行的方法(一般不用)
~~~~~~~~~~~~
结果类型
chain将多个action作为一个链来处理
dispatcher(转发默认)
freemarker
httpheader返回http响应头
redirect(重定向)
redirectAction重定向到另一个action
stream
velocity
xslt
plainText
~~~~~~~~~~~~~~
struts2整合jfreeChart
1,jfreeChart的使用
将lib包中增加jcommon.jar和jfreechart文件
JFreeChart/ChartFactory
准备数据
DefaultPieDataset dpd = new DefaultPieDataset();
  dpd.setValue("管理人员", 23);
  dpd.setValue("开发人员", 32);
  dpd.setValue("其它人员", 19);
  dpd.setValue("市场人员", 10);
  //JFreeChart chart=ChartFactory.createPieChart("某公司人员组织图", dpd, true, true, false);
  JFreeChart chart=ChartFactory.createPieChart3D("某公司人员组织图", dpd, true, true, false);
  ChartFrame cf=new ChartFrame("某公司人员组织图",chart);
        cf.pack();
        cf.setVisible(true);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
org.jfree.chart.servlet
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
~~~~~~~~~
基于jsp的输出
org.jfree.chart.servlet.*
ServletUtilities.saveChartAsPNG();
~~~~~~~~~~~~~~~~~~
struts整合jfreechart的
在action中定义一个变量
private JFreeChart chart;生成get/set方法
在exect中写
1:定义一个方法
@SuppressWarnings("unchecked")
increaseResult(List<String> list){
ActionContext context=ActionContext.getContext();
Map map=context.getApplication();
for(string str:list){
if(null==map.get(str)){
map.put(str,1);
}
else{
map.put(str,(Integer)mapget(str)+1);
}
}
}
private CategoryDataset getDataset(){
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
this.increaseResult(this.getInterest());
ActionContext context=ActionContext.getContext();
Map map=context.getApplication();
dataset.setValue(map.get("football"),"","足球");;
dataset.setValue(map.get("basketball"),"","篮球")
dataset.setValue(map.get("volleyball"),"","排球")
dataset.setValue(map.get("badminton"),"","羽毛球")
return dataset;
}
~~~~web.xml中来配置
jar打包
到要打包的目录
jar cvf struts2-jfreechart-plugin-2.0.11 -C *
将struts-plugin.xml中有extend="struts-package"
在package中extends=“jfreechart-default”
写action中
<result name=success type=chart>
<param name=height>500</param>
<param name=width>800</param>
</result>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
struts2整合spring
在web.xml中写
org.springframework.web.context.ContextLoaderListener
如果文件多的话,可以用
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>多个配置文件用逗号隔开</param-value>
</context-param>
~~~~~~~~~~~
Struts2整合JasperReport
java报表工具
1,JasperReport www.jasperforge.org
iReport管理工具
2,水晶报表 Business Object
3,Eclipse Business Inteligence and Reporting tool(BIRT)
www.eclipse.org/birt
~~~~~~~~~~~~~~~~~~~~~
整合jasperReport
web.xml中的package中extends=jasperReport
创建一个action
<result name=success type="jasper">
<param name="location">test.jasper</param>
<param name="dataSource">数据源名称</param>
<param name="format">HTML</param>
</result>
在action类中写
创建一个list集合
用iReport工具写好文件,会自动生成test.jasper
将文件放在web-Root中
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
struts2与json
存[{id:1,name:zhangshan},{id:2,name:lisi}]
取一个信息{id:1,name:zhangshan}
 
struts | 阅读 1346 次
文章评论,共0条
游客请输入验证码
浏览275801次