javaee之Struts2练习
来源:互联网 发布:视频去除马赛克软件 编辑:程序博客网 时间:2024/06/06 01:25
Struts2进行数据的共享:
1、使用域对象,使用request、session、application三个域对象
ServletActionContext来获取各个域
2、使用ActionContext得到Map集合来共享数据
得到的request为RequestMap,用来在request域中存放数据
得到的session为SessionMap,用来在session域中存放数据
得到的application为ApplicationMap,存放的域是ServletContext
3、使用实现接口来注入Struts2的Map集合
request、session、Application分别对应的接口为:
RequestAware、SessionAware、ApplicationAware得到的也是各个域的Map集合
Struts2的类型转换
当一些数据得到的形式不是用户所想要的形式,这个时候就需要使用类型转换来实现了
要实现类型转换需要让Action继承StrutsTypeConverter类,里面需要实现两个方法,一个方法是从页面传来的数据转换为需要的类型,
另一个方法是将用户的数据转换到页面
在Action类的同目录下,还需要建立一个Action类名-conversion.properties文件,在Action同目录下的converter文件是局部转换文件,
需要在全局进行转换的情况下,就需要在类路径下创建xwork-conversion.properties文件
Struts2的国际化
在Struts2中能够实现国际化的机制,主要是因为其内部拥有一个国际化的拦截器
<interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor" />
在需要国际化的Action中或者在类路径下创建国际化文件(名称_国家名.properties | message_zh_CN.properties),然后需要在Struts.xml
文件中定义<constant name="struts.custom.i18n.resources" value="gz.itcast.c_i18n.message"></constant>
在页面显示为<s:text name="国际化的名称">,在Action中也同样能够国际化显示,为getText(“国际化的名称”)
同时还定义了两个properties文件,message_zh_CN.properties、message_en_US.properties
1、使用域对象,使用request、session、application三个域对象
ServletActionContext来获取各个域
2、使用ActionContext得到Map集合来共享数据
得到的request为RequestMap,用来在request域中存放数据
得到的session为SessionMap,用来在session域中存放数据
得到的application为ApplicationMap,存放的域是ServletContext
3、使用实现接口来注入Struts2的Map集合
request、session、Application分别对应的接口为:
RequestAware、SessionAware、ApplicationAware得到的也是各个域的Map集合
import java.util.ArrayList;import java.util.List;import java.util.Map;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class DataAction extends ActionSupport {public String list(){List<String> list = new ArrayList<String>();list.add("狗屎1");list.add("狗屎2");list.add("狗屎3");// 方式一:使用域对象(servlet): 工具类: ServletActionContext HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); ServletContext context = ServletActionContext.getServletContext(); request.setAttribute("rList", list); session.setAttribute("sList", list); context.setAttribute("aList", list);//方式二:使用struts2提供的值栈中的Map集合: ActionContext工具类 //得到ActionContext对象ActionContext ac = ActionContext.getContext();//得到RequestMap ,来自于RequestAwareMap rp = (Map)ac.get("request");rp.put("rList", list);//得到SessionMap ,来自于SessionAware Map sp = ac.getSession(); sp.put("sList", list);//得到ApplicationMap,来自于ApplicationAwareMap ap = ac.getApplication(); ap.put("aList",list);return SUCCESS;}}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><!-- 该文件默认情况下必须放在项目的src目录下 --><struts><package name="data" namespace="/data" extends="struts-default"><action name="Data_*" class="demo3.DataAction" method="{1}"><result>/list.jsp</result></action></package></struts>
Struts2的类型转换
当一些数据得到的形式不是用户所想要的形式,这个时候就需要使用类型转换来实现了
要实现类型转换需要让Action继承StrutsTypeConverter类,里面需要实现两个方法,一个方法是从页面传来的数据转换为需要的类型,
另一个方法是将用户的数据转换到页面
在Action类的同目录下,还需要建立一个Action类名-conversion.properties文件,在Action同目录下的converter文件是局部转换文件,
需要在全局进行转换的情况下,就需要在类路径下创建xwork-conversion.properties文件
import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;public class Myconver extends StrutsTypeConverter {SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");//页面(String)->Action(自己的类型)//values: 页面传入的数据(字符串)//toClass: 当前javabean属性类型:java.util.Date@Overridepublic Object convertFromString(Map arg0, String[] values, Class toClass) {try {//如果是java.util.Date类型才需要转换if(toClass==java.util.Date.class){if(values!=null){String date = values[0];//转换成java.util.Date类型Date dateObj = sdf.parse(date);return dateObj;};}return null;} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}//Action到页面的转换类型@Overridepublic String convertToString(Map arg0, Object arg1) {// TODO Auto-generated method stubreturn null;}}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><!-- 该文件默认情况下必须放在项目的src目录下 --><struts><package name="conversion" namespace="/conversion" extends="struts-default"><action name="conversion" class="demo4.StudentAction" method="list"><result>/list.jsp</result><result name="input">/add.jsp</result></action></package></struts>
Struts2的国际化
在Struts2中能够实现国际化的机制,主要是因为其内部拥有一个国际化的拦截器
<interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor" />
在需要国际化的Action中或者在类路径下创建国际化文件(名称_国家名.properties | message_zh_CN.properties),然后需要在Struts.xml
文件中定义<constant name="struts.custom.i18n.resources" value="gz.itcast.c_i18n.message"></constant>
在页面显示为<s:text name="国际化的名称">,在Action中也同样能够国际化显示,为getText(“国际化的名称”)
import com.opensymphony.xwork2.ActionSupport;public class Demo1 extends ActionSupport {public String list(){System.out.println(getText("username"));System.out.println(getText("password"));System.out.println(getText("login"));return SUCCESS;}}
<constant name="struts.custom.i18n.resources" value="demo1.message"></constant>
同时还定义了两个properties文件,message_zh_CN.properties、message_en_US.properties
0 0
- javaee之Struts2练习
- javaee之分页练习
- javaee之AJAX练习
- javaee之文件上传下载练习
- javaee之javamail邮件练习
- javaee之Spring的练习
- javaee之JQuery练习一
- javaee之JQuery练习二
- javaee之struts2框架学习
- javaee之Struts2辅助功能
- javaee之servlet的基础练习
- javaee之session的购物车练习
- javaee之jsp和Servlet的练习
- javaee之监听器和过滤器练习
- javaee之hibernate的基础练习
- javaee之hibernate的加强巩固练习
- JavaEE之struts2 基础知识 总结了一点
- javaEE之--------Struts2常用标签总结
- INSTRB(C1,C2[,I[,J]])
- win7升级win10后出现VisualSVN Server提供程序无法执行所尝试的操作 0x80041024
- 工厂模式的代码实现,简单易懂。
- INITCAP(c1)
- 自定义Scrollview
- javaee之Struts2练习
- CONCAT(c1,c2)
- Golang实现通过微信接收告警消息
- CHR(n1)
- boosting之从GB到GBDT再到Xgboost
- 三角函数
- 利用反射机制实现工厂模式
- sqrt(x)
- 线程控制(linux C)