东西越多我越懒得写
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=\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u65E5\u671F\u683C\u5F0Fyyyy-MM-dd
这个是回显设置字体那个
挺好玩
在实体类下
键一个 User.properties文件
里面就写的这个
相关推荐
在掌握Struts2和OGNL的基础上,开发者可以进一步学习Struts2的其他组件和特性,如标签库、异常处理、国际化支持、拦截器机制、输入校验、文件上传和下载等,这些都是构建复杂Web应用不可或缺的组件和功能。
在“使用OGNL和Struts2标签展示页面(一)”的资料中,可能包含了如何利用OGNL标签展示用户信息、处理表单数据和文件上传等实际应用场景。学习这些示例有助于理解OGNL在实际项目中的应用。 **8. 总结** OGNL标签...
由于文件比较大,所以就没有上传lib下面的架包,需要的可以自己去apache网站下载struts2的架包fileupload,io|logging|freemarker|mysql-connector-java|ognl|struts2-core|xwork 这些包。数据库在项目中。自己导入...
- **课程大纲**包含了Struts2各个方面的深入讲解,从入门介绍到高级特性,如Action详解、配置参数、OGNL表达式、标签库、国际化支持、数据验证、文件上传与下载、拦截器、转换器以及插件等内容,为学习者提供了全面...
在文件上传下载中,OGNL用于在Action与JSP页面间传递和处理数据。 以上是Struts2文件上传的基本流程和关键知识点,实际开发中还需考虑错误处理、异常捕获以及安全性等方面的问题,例如防止文件覆盖、非法文件上传等...
这个项目利用Struts2框架实现了用户信息的管理功能,包括添加、删除、修改和查询用户信息,并且包含了文件上传和下载的功能。以下是对这些知识点的详细说明: 1. **Struts2框架**:Struts2是基于Apache的开源框架,...
在JAVAEE应用开发中,值栈(Value Stack)是一个核心概念,主要被Struts2框架广泛使用。...通过理解并熟练运用上述知识点,开发者可以有效地在JAVAEE环境中实现值栈文件的上传与下载功能,提升应用的用户体验和安全性。
// 实现文件上传的核心 ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> list = upload.parseRequest(request); for (FileItem item : list) { if (item....
利用struts2上传文件 环境配置JDK1.8 Eclipse 版本 Version: Mars Release (4.5.0) tomcat版本7.0.40 注意的问题是文件上传的时候的enctype="multipart/form-data" 如果设置错误会报错 今天初次使用Struts 2做文件...
【标题】:“视频在线观看 上传和下载” 这个标题揭示了我们要探讨的是一个与视频服务相关的项目,它涉及用户能够在线观看视频,并且支持视频的上传和下载功能。这种服务通常需要一套完整的后端系统来处理视频的...
我们需要将一系列Struts2相关的库文件复制到项目的`WebContent\lib`目录下,包括`struts2-codebehind-plugin-2.1.6.jar`、`struts2-core-2.1.6.jar`、`struts2-spring-plugin-2.1.6.jar`、`xwork-2.1.2.jar`、`ognl-...
在这个“Struts2 上传下载项目”中,我们将深入探讨如何利用Struts2实现文件上传与下载功能,并结合MySQL数据库、DAO(数据访问对象)层以及MVC架构来构建一个完整的应用。 1. **Struts2框架基础** Struts2的核心...
在文件上传中,它提供ActionForm类的替代——ActionSupport,其中包含了处理文件上传的方法,如getServletFile()和getServletFiles()。 2. **freemarker-2.3.8.jar**:FreeMarker是一个强大的模板引擎,用于生成...
例如,Commons Lang提供了字符串处理、反射、日期时间等操作,而Commons BeanUtils帮助简化对象属性的设置和获取,Commons FileUpload则处理HTTP文件上传等。 `freemarker`是一个强大的模板引擎,用于生成动态HTML...
以上知识点涵盖了Struts2框架在处理文件上传下载时涉及的主要技术和实践。通过对这些内容的学习和掌握,开发者能够更好地运用Strut2来构建高效、稳定的Web应用。在实际项目中,可以结合Struts2提供的文档、示例代码...
### Struts2文件上传知识点详解 #### 一、概述 在Web应用开发中,文件上传是一项常见的需求。Struts2框架提供了便捷的方式来处理文件上传功能。...希望本文能帮助您更好地理解和掌握Struts2框架下的文件上传技术。
总的来说,要实现Java Struts2框架下上传jad等文件类型,我们需要配置Struts2的文件上传支持,编写处理文件上传的Action类,以及可能需要解析和处理jad文件的额外逻辑。以上各步骤都需要对Struts2框架、文件上传机制...
在Struts2中实现文件上传是一项常见的任务,这通常涉及到处理用户通过表单提交的文件,例如图片、文档或其他类型的数据。这个过程涉及到多个步骤和技术,包括前端HTML表单的构造、后端Struts2的配置以及文件存储策略...