概述
东西越多我越懒得写
Struts的OGNL
ognl 对象图导航语言
ognl表达式语言
页面取值。不过好慢啊还不如我自己写了
EL表达式语言:jsp语言的标准(默认可以使用)
OGNL表达式语言:Struts标签默认支持的表达式语言
算了 爸爸自己写吧
先写一个JSP页面
${fn:toUpperCase(‘hello’)}
这个东西怎么实现呢
1
先写一个类
public class MyFuntion
{
public static String toUpperCase(String str)
{
return str.toUpperCase();
}
}
2
配置这个类
在xml那个地方,写一个 myfun.tld 文件
表头
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>2.0</tlib-version><!-- 标签的版本 -->
<short-name>fn</short-name><!-- 标签的前缀,和taglib中的prefix的值对应 -->
<uri>http://qianfeng.com/javaee01</uri>
下来是内容
<function>
<name>toUpperCase</name>
<function-class>com.qianfeng.web.function.MyFunction</function-class>
<function-signature>
java.lang.String toUpperCase(java.lang.String)
</function-signature>(为了确定这个类的名字)
</function>
</taglib>
3
好了第三步,转到JSP页面上
写一个
<%@ taglib uri=”(这个就是上面那个地址)” prefix=”(这个上面也写了)fn”%>
ok大功告成。
自己写一个玩玩吧。
好了 写好了
遇到的坑,,别配置错就ok了,挺简单的
下一项
据说很重要?刚讲就睡着了前面就略过自己理解吧
对了提前说个小东西
<!-- 默认把“”中的值看成ognl表达式 -->
<s:property value="helloword"/><hr>
<!-- 把‘’看成字符串 -->
<s:property value="'helloword'"/><hr>
<!-- 可以访问非静态方法 -->
<s:property value="'abcedfg'.length()"/><hr>
<!-- 访问静态属性(+@) -->
<s:property value="@java.lang.Integer@MAX_VALUE"/><hr>
<!-- 使用ognl创建List集合 -->
<s:radio list="#{'1':'男','2':'女'}" label="性别" name="sex"></s:radio>
不想写了自己理解吧
这个ognl标签,也不难(至少我听到的)
先建立个TestAction类 往里面放东西
首先得到和当前线程绑定的actioncontext对象
ActionContext actionContext = ActionConetxt.getContext();
然后分几个map
Session:
Map<String , Object> sessionMap=actionContext.get(“session”);
这个方法太麻烦了啊我还是用下一个吧
HttpSession session = ServletActionContext.getRequest.getSession();
Application:
我也不知道这是个什么玩意从哪来的干嘛的就将就用吧
Map<String , Object> applicationmap=actionContext.get(“application”)
Map<String,Object> applicatMap=actionContext.getApplication();
第二个字节少就用第二个吧我自豪我骄傲我为祖国省能源
applicatMap.put(“这个东西随便起名”,“随便放”);
Request:
Map<String,Object> request=actionContext.get(“request”);
request.put(“”,””);
直接存:
actionContext.put(“”,””);
return “success”
一会试一试这玩意能不能存List集合什么类吧芭啦芭啦
还需要配置Struts.xml
不禁思考如果要从action进要这个东西干嘛,
我直接访问界面看不到,还非要从方法走么,,,
配置xml 和以前一样
JSP页面
例子:
<s:property value=“#session.name”/>
<s:property value=“#key”/>
好了现在去看能不能存List
okok都可以的,直接用最简单那个 ,很吊
我现在想实现的功能是遍历,直接把一个数据库打出来,
拦截器放在一起→ →
还是先声明拦截器
<interceptors>
<interceptor-ref name=“myinterceptor1”class=“”></interceptor-ref>
<interceptor-ref name=“myinterceptor1”class=“”></interceptor-ref>
</interceptors>
用的时候,先定义一个拦截器栈
<interceptors>
<interceptor-stack name=“myStack”>
<interceptor-ref name=“myinterceptor1”>
(设置不拦截的方法)
<param name=“excludeMethods”>login</param>
</interceptor-ref>
<interceptor-ref name=”defaultStack”></interceptor-ref>
</interceptor-stack>
<interceptors>
设置默认的拦截器引用
<default-interceptor-ref name=”myStack”></default-interceptor-ref>
大功告成,感觉有点麻烦 就多写几行代码,,
算了算了 还是用这个吧。
文件的上传与下载
先写上传
上传先写JSP页面(我一直不能独立写出来的一个破东西。。)
不过现在能了,因为只有两行代码(微笑脸)
不过估计还是不能。。。
jsp用的还是Struts标签
<s:form action=”upload.action” enctype=”multipart/form-data”>
(敲黑板这个enctype里的话把我一顿坑,要记下来
enctype=”multipart/form-data”enctype=”multipart/form-data”
enctype=”multipart/form-data”enctype=”multipart/form-data”
enctype=”multipart/form-data”enctype=”multipart/form-data”>
就先写这么多吧
<s:textfield name=”username” label =”用户名”></s:textfield>
<s:file name=”photo” label=”照片”></s:file>
<s:submit value=”提交”></s:submit>
然后开始写action里的方法
public class UploadAction extends ActionSupport
敲黑板:有四个属性
private String username;
private File photo;
private String photoFileName;
private String photoContextType;
public String upload()
{
String path =SevlectActionContext.getServletContext().getRealPath
后面跟个文件夹名~一般是(“/WEB-INF/upload”);
File dir = new File(path);
if(!dir.exists())
{
dir.mkdirs();
}
photo.renameTo(new File(dir,photoFileName));
return success;
}
好了 完成了 很少吧 不用写什么痛苦的流输入~
写四个属性
第一个照片名字(输入的)第二个照片名(输入的)
第三个存储文件文件名(照片名+FileName)
第四个(照片名+ContextType)
都有getset方法
然后获得一个路径
String path 很简单的 ServletActionContext.getServletContext.getRealp
然后创建文件了
File dir = new File(path)
如果dir 没有 就创建一个
然后
photo.renameTo(new File(dir,photoFileName));
接着我们来xml文件里的东西
<package name="p1" extends="struts-default">
<action name="upload" class="com.qianfeng.web.action.UploadAction" method="upload">
<!-- 设置上传文件的扩展名类型 -->
<!-- <interceptor-ref name="defaultStack">
<param name="fileUpload.allowedExtensions">jpg</param>
</interceptor-ref> -->
<!-- 设置上传文件的mime类型 -->
<interceptor-ref name="defaultStack">
<param name="fileUpload.allowedTypes">image/jpeg,image/gif,image/</param>
</interceptor-ref>
<result name="success">/success.jsp</result>
<result name="input">/upload.jsp</result>
</action>
也特别简单我就不写了,不过一个有意思的是这个
<constant name=”struts.multipart.maxSize” value=”5222222”>
</constant>
ok差不多了 我先写一个看看
还没写明白一个迷一样的bug
不过不管了
写download
public class DownLoadAction extends ActionSupport
{
private InputStream inputstream;
public String download() throws FileNotFoundException
{
//设置被下载文件的路径
String path=ServletActionContext.getServletContext.getRealPath
//创建读取被下载文件的字节读取流
inputstream = new FileInputStream(path);
return “success”
}
结束了,,真简单啊。。。
记得写getset方法
struts.xml
<result type=”stream”>
<param name=”inputName”>inputstream</param>
<param name=”contectType”>application/octet-stream</param
<param name=”contenDisposition”>attachment;filename=aa.jp
</result>
okok迷迷糊糊完成了,现在完成一个另一个东西
#Invalid field value for field "birthday".
invalid.fieldvalue.birthday=u8BF7u8F93u5165u6B63u786Eu7684u65E5u671Fu683Cu5F0Fyyyy-MM-dd
这个是回显设置字体那个
挺好玩
在实体类下
键一个 User.properties文件
里面就写的这个
最后
以上就是深情马里奥为你收集整理的文件上传下载和ognl的全部内容,希望文章能够帮你解决文件上传下载和ognl所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复