Struts笔记5

匿名 (未验证) 提交于 2019-12-02 21:45:52

文件下载

1.写action类

package com.gyf.web.action;   import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream;  import com.opensymphony.xwork2.ActionSupport;  public class DownloadAction3 extends ActionSupport {     private InputStream is;               public InputStream getInputStream() {         return is;     }          public String download() throws FileNotFoundException{         String path = "C:/Users/Yuan/Desktop/9.png";         //给输入流赋值         is = new FileInputStream(path);         return SUCCESS;     } }

2.配置struts.xml

查看源码发现要以流的方式返回给客户端需要配置3个参数

<action name="download" class="com.gyf.web.action.DownloadAction" method="download">             <!--以流的形式返回给客户端  -->             <result name="success" type="stream">                 <param name="inputName">is</param><!--输入流名称  -->                 <param name="contentType">application/octet-stream</param><!--设置响应头  -->                 <param name="contentDisposition">attachment;filename=9.png</param><!--设置响应头  -->             </result>         </action>

上面那张图流写is根本调用不了getInputStream的方法要把is变量名更改为inputStream才可以。

下载完成

struts的OGNL

OGNL是Object Graphic Navigation Language的缩写

他是一个单独的开源项目,Struts2框架使用OGNL作为默认的表达式语言

OGNL是struts2整合的一个开源项目,所以在Struts2中,要想使用OGNL表达式,必须使用struts2标签库

OGNL相当于EL表达式,从作用于取数据

OGNL的功能

访问对象方法,静态属性,静态方法,封装List数据,封装Map数据

<!-- OGNL表达式      首先:要在jsp页面导入<%@ taglib uri="/struts-tags" prefix="s" %>> --> <!-- 表示从作用于取值,加上单引号表示字符串 --> <s:property value="java-struts2"/>  <!-- 表示获取字符串的长度 --> <s:property value="'java-struts2'.length()"/>  <!-- 访问静态属性,需要在strtus上配置允许静态方法访问 --> int的最大值<s:property value="@java.lang.Integer@MAX_VALUE"/> 随机数<s:property value="@java.lang.Math@random()"/> <!-- 封装List数据,数组 --> <%-- <s:radio list="{'男','女'}" name="gender" label="性别"></s:radio> --%> <!-- 封装Map数据,用#{'key''value'} -->  <s:radio list="#{'male':'男','female':'女'}" name="gender" label="性别"></s:radio>

往contextMap存数据

struts的iterator遍历

在action类中提供了get 方法,就会把属性存放到值栈

1.创建action类

package com.gyf.web.action;  import java.util.ArrayList; import java.util.List; import com.gyf.web.model.Student; import com.opensymphony.xwork2.ActionSupport;  public class Demo03Action3 extends ActionSupport{     //action提供属性,并提供get方法,这个属性就会被存在值栈     private List<Student> stuList;     public String list() {         //JSP一般从值栈取数据         //创建对象         stuList = new ArrayList<Student>();         //往集合添加数据         stuList.add(new Student("迪丽热巴",18,"北京"));         stuList.add(new Student("刘亦菲",19,"上海"));         stuList.add(new Student("佟丽娅",20,"深圳"));         stuList.add(new Student("古娜力扎",21,"广州"));         stuList.add(new Student("关之琳",21,"香港"));         return SUCCESS;     }      public List<Student> getStuList() {         return stuList;     }      } 

2.数据在jsp页面中使用遍历把数据取出,

<%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%>     <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title>  </head> <s:debug></s:debug> <body>     <table border="1">         <tr>             <td>名字</td>             <td>年龄</td>             <td>城市</td>         </tr>         <!--使用struts的遍历标签             value :写值栈的变量名             var:遍历的变量名,存放到ContextMap                        -->           <s:iterator value="stuList" var="stu"><!--值栈中的数据不用加上#可以取 -->                 <tr>                     <td><s:property value="#stu.name"/></td><!--ContextMap的数据要加上#取 -->                     <td><s:property value="#stu.age"/></td>                     <td><s:property value="#stu.city"/></td>                 </tr>           </s:iterator>     </table> </body> </html>

OGNL投影:是指可以给定过滤条件

OGNL表达式加条件

1 > .?#过滤所有符合条件的集合

2 > .^#过滤第一个符合条件的集合

3 > .$# 过滤最后一个符合条件的集合

Struts的set标签

set标签
往作用于存数据
value:ֵ
var:变量名
scope:作用域

<!-- s:set标签          往作用于存数据         value:值         var:变量名         scope:作用域      -->      <s:set value="'迪丽热巴'"  var = "username1" scope="application"/>      <s:set value="'古娜力扎'"  var = "username2" scope="session"/>      <s:set value="'刘亦菲'"  var = "username3" scope="request"/>      <s:set value="'佟丽娅'"  var = "username4" scope="action"/>            <!-- 取值 -->      <s:property value="#application.username1"/>       <s:property value="#session.username2"/>        <s:property value="#request.username3"/>         <s:property value="#action.username4"/>
文章来源: Struts笔记5
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!