Struts2 随笔1

配置拦截器
<interceptors>
                <interceptor-stack name="mystack">
                    <!-- 默认的拦截器 -->
                    <interceptor-ref name="struts-default"></interceptor-ref>
                    <!--查看每个运行action时间 -->
                    <interceptor-ref name="timer"></interceptor-ref>
                </interceptor-stack>
            </interceptors>
            <!-- 修改默认拦截器(要在action之前) -->
            <default-interceptor-ref name="mystack"></default-interceptor-ref>
在struts.xml文件中,有时候打一个 < 却没有提示,原因是因为没有连接互联网,访问不到"http://struts.apache.org/dtds/struts-2.3.dtd"这个路径
解决方法:1、连接到互联网,工具会自动下载使用
          2、在MyEclipse中配置一下
配置步骤如下:
Window---?Preferences--?MyEclipse Enterprise …. ---?XML-----?XML Catalog --?
然后点击Add按钮,添加文件。Location 添加的是struts-2.3.dtd文件的路径,Key Type选择URL,KEY中的内容为http://struts.apache.org/dtds/struts-2.3.dtd,选择OK.
注意:在配置完成之后,struts.xml文件中可能会有一个红叉,按一下回车键,然后在保存一下就可以了
<!--公共的跳转 -->
    <global-results>
         <result name="logins" type="redirectAction">
            <param name="actionName">login</param>
              <!-- login?code=1001 -->
            <param name="code">1001</param>
          </result>
    </global-results>
文件下载
<action name="download" class="com.peng.action.UserAction" method="download">
                <result type="stream">            //文件类型
                    <param name="contentType">${fileType}</param>            //文件大小
                    <param name="contentLength">${fileLength}</param>
                    <param name="contentDisposition">attachment;filename="${fileName}"</param>
                    <param name="contentCharSet">UTF-8</param>            //指向getInputstream
                    <param name="inputName">inputstream</param>
                    </result>
            </action>

//action

  public String download() {
        return SUCCESS;
    }
    public InputStream getInputstream() throws FileNotFoundException {
        fileName = "zhangqingfeng.doc";
        File file = new File("E:/Download/",fileName);
        fileType = map.get(file.getName().substring(file.getName().trim().lastIndexOf(".")));
        fileLength = file.length();

        return new FileInputStream(file);
    }
//文件上传
<action name="upload" class="com.peng.action.UserAction" method="upload">
                <result type="redirectAction">
                    <param name="actionName">home</param>
                </result>
            </action>

//action
public String upload() throws Exception{
        System.out.println("Desc: " + desc);
        //获取文件名称为临时文件的名称
        System.out.println("Pic Name: " + pic.getName());
        System.out.println("Pic length :" + pic.length());
        //获取文件真正的文件名
        System.out.println("File Name:" + picFileName);
        System.out.println("文件类型:" + picContentType);

        InputStream input = new FileInputStream(pic);
        OutputStream out = new FileOutputStream(new File("E:/Download/",UUID.randomUUID().toString()+picFileName.substring(picFileName.lastIndexOf("."))));
        byte[] buffer =  new byte[1024];
        int len = -1;

        while ((len=input.read(buffer))!=-1) {
            out.write(buffer,0,len);
        }

        out.flush();
        out.close();
        input.close();
        return SUCCESS;
    }

Struts2 随笔1,布布扣,bubuko.com

时间: 2024-10-13 00:23:18

Struts2 随笔1的相关文章

IDEA struts2随笔(1)

struts2为基于MVC模式的轻量级web层应用框架,其以WebWork为核心,采用拦截器机制处理前端页面的请求,从而使得web层的业务逻辑控制能够与Servlet API完全脱离,与struts1大不相同,具体优点可问度娘. IDEA能够帮助开发者完成导包及web.xml文件中的基本配置,能够帮助开发者减少冗余操作,优于Eclipse,先将基本框架搭建步骤总结如下: Eclipse : 1.导包 2.编写Action类 3.配置src/struts.xml文件 4.web.xml中配置str

struts2标签用法随笔

1.s:textfield的label可以设置显示的文字,但是不能嵌套调用s:property,这样可以解决 <s:textfield name="name" ><s:property value="#st.index+1"/></s:textfield> 2.s:iterator 遍历的序号 <s:iterator value="type.subs" status="st">&

随笔55 Struts1和Struts2的区别和对比

Action 类:  ? Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口.  ? Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能.Struts2提供一个ActionSupport基类去 实现 常用的接口.Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象. 线程模式:  ? Strut

struts2使用随笔

获得request等对象 通过ServletActionContext获得 HttpServletRequest request = ServletActionContext.getRequest(); 另一种方法,通过实现相关接口,依赖注入获得 public class ParamGet extends AbstractInterceptor implements ServletRequestAware, ServletResponseAware, ServletContextAware {

Struts2入门(七)——Struts2的文件上传和下载

一.前言 在之前的随笔之中,我们已经了解Java通过上传组件来实现上传和下载,这次我们来了解Struts2的上传和下载. 注意:文件上传时,我们需要将表单提交方式设置为"POST"方式,并且将enctype属性设置为"multipart/form-data",该属性的默认值为"application/x-www-form-urlencoded",就是说,表单要写成以下这种形式: <form action="" metho

struts2.5框架使用通配符指定方法常见错误

struts2.5框架使用通配符指定方法(常见错误) 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace="/" extends="struts-default"> <!-- 配置Action --> <actionname="user_*" class="userAction" method="{

struts2中服务器端数据校验

数据校验指对数据合法性进行检查,根据验证数据的位置可以分为客户端验证和服务器端验证,今天随笔主要写的是实现服务器端的数据验证,服务器端数据验证主要特点: ·数据提交后在服务器端验证 ·防止绕过客户端验证提交的非法数据 ·可以在服务器端处理数据前保证数据的合法性 Struts2中有两种实现服务器端验证的方式. 一.       使用ActionSupport编码实现验证 在Action类的方法中直接验证 在Action 类中直接进行校验是一种最为原始的方法,这里作为了解,首先是action 类中的

博客园随笔中点击标签可以跳到当页指定位置的方法

我们在写随笔的时候,如果内容比较多,那么我们就希望在最前面的索引中能自带跳转本文中的具体问之的功能.下面就简单介绍下载博客园中要实现这样的功能的方法.例如文章结构可能如下,那么我们希望点击索引中的索引项时能具体调到具体内容中对应的位置. 索引 1.Struts2是什么玩意?核心?主要的功能? 2.Struts2的核心知识 内容 一  .Struts2是什么玩意?核心?主要的功能? ....... 二.Struts2的核心知识 ...... 具体方法是将你要跳转的标题插入设置书签,之后在标签中插入

解决myeclipse中struts2 bug问题包的替换问题

因为struts2的bug问题,手工替换还是比较麻烦,但即便是最新的myeclipse2014也没有替换最新的struts2包,研究了一天,终于找到了解决办法.以下就解决方法与大家分享一下. 1.在perferences中找到 Myeclipse->Project Libraries,右边找到 struts2.1 Libraries,点击 Enable advanced configiguration,去掉以下文件前面的对勾,然后点击 Add custom Jars 2.在弹出的对话框中选择 A