struts2标签

Struts2完成文件上传

▼魔方 西西 提交于 2020-03-01 20:27:24
  文件上传是 WEB 应用经常需要面对的问题。在大部分时候,用户的请求参数是在表单域输入的字符串,但如果为表单元素设置 enctype= “ multipart/form-data ”属性,则提交表单时候不再是以字符串方式提交请求参数,而是以二进制编码的方式提交请求,此时直接通过 HttpServletRequest 的 getParameter 方法就无法正常获取请求参数的值,而通过二进制流来获取请求内容,就可以获取到上传文件的内容,从而实现文件上传的功能。 Struts2的 文件上传支持在原有的文件上传项目上做了进一步的封装,只需要将属性封装表单的文件域,就可非常轻松地完成文件上传。 一、 首先讲解一下,在页面中标签 form 表单中的属性:   1 ) action 属性指定了表中提交的 URL ;   2 ) method 属性指定是以 POST 方式还是 GET 方式提交请求;   3) Enctype 属性指的是表单数据的编码方式,该属性有如下 3 个值:      application/x-www-form-urlencoded: 默认编码方式,它只处理表单 里的 value 属性值。      multipart/form-data: 指的是以二进制流的凡是来处理表单数据,这 种方式会把文件或者文件的内容也封装到请求参数里。      text/plain

struts2文件上传

假如想象 提交于 2020-03-01 20:27:04
文件上传说白了就是利用form表单request域中上传数据,后台到Action中解析request域进行文件获取和文件类型以及后缀解析,过程比较繁琐,不过这些公共的繁琐步骤是struts框架已经为我们做好了,只需要按照其规则进行页面绘制和后台属性注入即可 1、form表单必须为method="post" enctype="multipart/form-data",得有file标签 <input type="file" name="upload" /> 2、action中定义拦截器规定名字的属性,File类型的属性用于接收上传的文件内容,文件名得和form表单中的file类型标签的name一致,后面两个属性是struts拦截器用的用于存放文件名和文件类型的,省得自己再去解析了,要求就是前部分和form表单的name一致,后半部分以FileName结尾或以ContentType结尾 3、在相应Action的方法中就可以直接获取文件内容和后缀以及文件名进行保存使用,如 if(uploadFileName != null){ // 打印 System.out.println("文件类型:"+uploadContentType); // 把文件的名称处理一下 String uuidname = UploadUtils.getUUIDName(uploadFileName); //

Struts2的声明式异常处理

梦想与她 提交于 2020-02-29 16:35:03
在struts2应用程序中你还在使用try catch语句来捕获异常么?如果是这样的,那你OUT啦!struts2支持声明式异常处理,可以再Action中直接抛出异常而交给struts2来处理,当然需要我们在xml文件中配置,由于抛出同样的异常的处理方法通常都一样,所以如果能在xml中配置全局异常,将会使得开发便捷性大大提高。 以前的异常捕获可能是这样的: /** * 执行更新 * * @return */ public String update() { Article article = new Article(); article.setContent(content); article.setTitle(title); article.setId(id); try { articleService.update(article); return SUCCESS; } catch (SQLException e) { e.printStackTrace(); return ERROR; } catch (InvalidInputException e) { e.printStackTrace(); System.out.println( "输入非法" ); return ERROR; } } 这种方式是完全的手动处理异常,一来不够简洁明快,而且还不容易维护

Struts2---->声明式异常处理

守給你的承諾、 提交于 2020-02-27 04:27:23
声明式异常处理 struts2支持声明式异常处理,可以在Action中直接抛出异常而交给struts2来处理,当然需要我们在xml文件中配置,由于抛出同样的异常的处理方法通常都一样,所以如果能在xml中配置全局异常,将会使得开发便捷性大大提高。 一、声明式异常处理(分为action中异常映射和package中的全局异常映射) 以前的异常捕获可能是这样的: public String update() { Article article = new Article(); article.setContent(content); article.setTitle(title); article.setId(id); try { articleService.update(article); return SUCCESS; } catch (SQLException e) { e.printStackTrace(); return ERROR; } catch (InvalidInputException e) { e.printStackTrace(); System.out.println("输入非法"); return ERROR; } } 采用struts2的声明式异常处理就会简单很多了 1、首先,上面的代码的try catch 就可以全都不要了,但是得新加throw语句抛出异常

struts2-第一章-基础用法2

主宰稳场 提交于 2020-02-27 04:23:40
一,回顾 struts2框架搭建步骤   (1)创建maven项目   (2)web.xml配置struts2的核心过滤器(filter)   (3)pom.xml配置servlet,struts的依赖   (4)把自定义action类配置struts.xml中 action类中默认执行的方法:   execute(),若要修改默认方法:;struts.xml中action节点配置method,action中默认方法的返回值:   "success"若要修改的返回值:struts.xml中result节点name属性 表单数据的提交:    使用成员变量   注意:   (1) action类中成员变量名称必须和表单中元素name一样   (2) action类中成员变量必须有set和get方法,利用反射来访问成员变量   (3) action类中成员变量名称前两个字母必须小写开头 二,配置默认的action    当我们访问项目根路径,会显示index.jsp原因是我们在web.xml中配置了默认的欢迎页面 在struts2框架目录中,访问的路径不存在,抛404异常,此时我们可以使用默认action,当访问路径不存在时,可以显示一个友好的提示页面 1、新建DefaultAction public class DefaultAction extends ActionSupport

struts2的工作原理

青春壹個敷衍的年華 提交于 2020-02-22 09:21:11
Struts2的工作原理   Struts2是在Struts1的基础上发展而来的,Struts是WebWork和Struts1的集合,采用的正是WebWork的核心,更多的是WebWork。 上图来源于Struts2官方站点,是Struts 2 的整体结构。 Controller Filter 为Struts2拦截指定的URL请求; Interceptors 拦截器,在调用Action前或之后由拦截器对请求进行预处理,或后处理; Model Action 处理业务逻辑,并为页面提供输出的数据; View JSP 显示页面。 一个请求在Struts2框架中的基本工作过程如下: 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin); 接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action; 如果ActionMapper决定需要调用某个Action

Struts2(五)数据校验

主宰稳场 提交于 2020-02-20 07:50:28
一、概述   在提交表单数据时,如果数据需要保存到数据库,空输入等可能会引发一些异常,为了避免引起用户的输入引起底层异常,通常在进行业务逻辑操作之前,先执行基本的数据校验。   下面通过两种方式来阐述Struts 2的数据校验功能。 二、重写validate方法   我们编写的Action一般继承与ActionSupport,而ActionSupport不仅实现了Action接口,还实现了Validatable接口,提供了数据校验功能。在Validatable接口中定义一个validate方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldError域中,然后通过OGNL表达式输出。   下面是用户登录界面: <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset

Struts2数据校验

*爱你&永不变心* 提交于 2020-02-20 06:47:35
一.为什么要进行数据校验 对于一个web应用而言,所有的应用数据都是通过浏览器收集的,用户的输入信息是非常复杂的,对于一些用户操作不熟练,输入出错,等网络传输不稳定,这些都有可能导致异常输入。 异常的输入,轻则导致系统非正常中断,重则导致系统崩溃,应用程序必须能正常处理表现层接收的异常数据,通常的做法是遇到非法数据,应用程序将相应的给出用户提示,提示用户必须输入要求的数据,也就是将那些异常输入过滤掉,我们说对异常数据的过滤就是数据校验。 二.如何实现数据校验 我们可以让一个自定义类去继承自一个ActionSupport类,这个类是一个默认的的Action实现类,他的完全限定名com.opensymphony.xwork2.ActionSupport.这个类中提供了很多的默认方法,包括获取国际化信息的方法,数据校验的方法,以及默认处理用户请求的方法等,由于ActionSupport类是Struts2默认的实现类,所以如果在struts.xml中的Action配置中省略了class属性,则代表访问ActionSupport类,其execute()方法直接返回SUCCESS,同时ActionSupport类还增加了对验证,本地化的支持。 login.jsp <div> <!-- 输出校验信息 注意标签的名称要与方法的名称相对应--> <s:fielderror fieldName=

Struts2数据校验

谁都会走 提交于 2020-02-20 06:46:04
一.为什么要进行数据校验 对于一个web应用而言,所有的应用数据都是通过浏览器收集的,用户的输入信息是非常复杂的,对于一些用户操作不熟练,输入出错,等网络传输不稳定,这些都有可能导致异常输入。 异常的输入,轻则导致系统非正常中断,重则导致系统崩溃,应用程序必须能正常处理表现层接收的异常数据,通常的做法是遇到非法数据,应用程序将相应的给出用户提示,提示用户必须输入要求的数据,也就是将那些异常输入过滤掉,我们说对异常数据的过滤就是数据校验。 二.如何实现数据校验 我们可以让一个自定义类去继承自一个ActionSupport类,这个类是一个默认的的Action实现类,他的完全限定名com.opensymphony.xwork2.ActionSupport.这个类中提供了很多的默认方法,包括获取国际化信息的方法,数据校验的方法,以及默认处理用户请求的方法等,由于ActionSupport类是Struts2默认的实现类,所以如果在struts.xml中的Action配置中省略了class属性,则代表访问ActionSupport类,其execute()方法直接返回SUCCESS,同时ActionSupport类还增加了对验证,本地化的支持。 三.数据校验案例 我们在这里就一个登录案例来演示 1.登录界面login.jsp: <%@ page language="java" import=

struts2 之 struts2数据校验

╄→尐↘猪︶ㄣ 提交于 2020-02-20 06:43:33
1. 数据校验一般分为2类:前端的校验(js校验),后端的校验(java代码);实际开发中大部分情况下都是采用js校验。在对数据安全要求较高的情况下可能会采用后端验证。 2. Struts2提供了后端验证机制。有两种方式来实现,一种是通过硬编码来实现,一种是通过校验框架来实现。在struts2如果使用struts2提供校验机制,那么必须继承ActionSuport类。该类中有一个vaildete方法,在处理的action类中重写该方法,那么在执行所有方法的时候,会执行validate方法。validate方法通过以后才执行处理方法。如果要验证特定的方法,那么需要为特定的方法指定其验证方法,命名规则,如果处理方法为xxx,那么验证方法为vaildateXxx。执行顺序为先执行validateXxx,在执行validate方法,在执行xxx方法。 3. 添加校验方法后执行流程: 4. 实现步骤: (a).在处理类中添加校验方法: public class UserAction extends ActionSupport{ private User user; //添加的处理方法 public String add(){ System.out.println("执行add"); System.out.println("执行添加动作"); return Action.SUCCESS; }