struts2框架

struts2框架之重复提交问题

匿名 (未验证) 提交于 2019-12-03 00:43:02
防止重复提交 1. 什么是重复提交 * 提交表单时,点击一次后,页面没有刷新时,马上又点击一次,就是重复提交 * 提交后,通过浏览器的回退,又回到了表单页面,再次提交 * 提交后,按F5刷新,也是重复提交。 2. 防止重复提交的原理:(请看图) 3. 防止重复提交的步骤 * 在表单页面中使用<s:token>标签 * 在<action>引用token标签器 * 添加invalid.token,当重复提交时token拦截器转发到这个结果 * 在结果页面中给出<s:actionerror/>输出错误信息 * 国际化错误信息:struts.messages.invalid.token 原文:https://www.cnblogs.com/xyhero/p/9348805.html

struts2的拦截器

匿名 (未验证) 提交于 2019-12-03 00:41:02
  Struts2框架的底层依赖的是XWork框架,XWork框架是命令模式的实现,提供了Action的管理,Result对象的处理以及最重要的组件“拦截器”(interceptor)。在Struts2接收request到完成响应response的过程中,struts2框架内部对功能上进行了封装,比如上传、数据验证,以及登录功能中对Action属性的赋值,都是拦截器在起作用。拦截器可以将组件进行松耦合开发。   可以在项目中创建多个拦截器,为了对拦截器有效管理,可以将它们分组,形成拦截器栈,在struts-default.xml 中就有一个名为defaultStack拦截器栈。   定义拦截器就要继承AbstractInterceptor类重写intercept()方法,进行业务处理,ActionInterceptor的invoke()主要功能就是执行Action中的内容,返回值就是result的逻辑名称。   接下来举个栗子: 先定义一个action,在struts.xml中声明为printUsername.action,result对应的页面自定义 1 package com . hyp . controller ; 2 3 /** 4 * @author hyp 5 * Project name is LearnStruts 6 * Include in com.hyp

Struts2框架入门

匿名 (未验证) 提交于 2019-12-03 00:33:02
Struts2简单的使用步骤 一、导入jar包(在解压后的struts2文件夹中的apps文件夹中任选一个示例,将其中的jar包复制到项目中) 二、创建action(每次访问action时,默认执行名称为execute方法) 三、创建struts.xml配置文件: 文件名称和路径固定 ) <!DOCTYPEstruts PUBLIC ) 四、在web.xml文件中配置struts2过滤器(添加如下代码): <filter> Struts2的执行过程 一、浏览器通过地址栏发送请求至服务器,服务器通过web.xml中配置的过滤器(在服务器启动的时候创建)来调用相对应action中的execute方法来实现功能。 二、过滤器实现过滤功能的步骤: //得到action类 (四)用得到的action返回值,在struts.xml文件中,找到该Action标签里面是否有result标签,如果有就匹配result标签的name属性值是否一样,如果一样,就跳转到配置的页面中。 过滤器创建时间和作用 一、创建时间:在服务器启动的时候创建。 二、作用:创建过滤器的时候执行init方法,init方法主要作用是加载配置文件(包括自己创建的配置文件和struts2自带的配置文件) 在Struts.xml中配置action的访问路径 在配置过程中主要用到三个标签:package、action和result 一

struts2

匿名 (未验证) 提交于 2019-12-03 00:26:01
Struts2 的struts.xml 配置文件 <?xmlversion="1.0" encoding="UTF-8"?> <!DOCTYPE strutsPUBLIC "-//Apache Software Foundation//DTD Struts Configuration2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <!-- 可以有多个包, 但是包名要唯一--> <!--name是包名,extends是继承父类的包名 abstract:设置package的属性为抽象的,抽象的package不能定义action,值true:false namespace:定义package命名空间,该命名空间影响到url的地址,例如该命名空间为/test,那么访问的地址为http://localhost:8080/struts2/test/xx.action --> <struts> <package name="main"extends="struts-default"> <interceptors> <!--定义拦截器 --> <interceptor name=”logger”class=”com.kay.logger”></interceptor> <!--定义拦截器栈--> <interceptor-ref

struts2学习:基础学习-1

匿名 (未验证) 提交于 2019-12-03 00:26:01
一、为什么要学习Struts2 固定编码步骤,提高编码效率。 框架都是半成品 二、开发人员用Struts2天天写什么? 1、控制器:核心组件(框架提供的) 不同:过滤器要比 Servlet 强大,过滤器有权利决定是否放行。 总结: Servlet 能做的, Filter 都能做。 2 、配置文件:指挥控制器运作(日后经常写) 3 、动作类:处理逻辑(日后经常写) 4 、 JSP :展现结果(日后经常写) 三、Struts2的历史 四、搭建Struts2的开发环境 1、拷贝jar包 参考发行包中的struts2-blank.war中的jar 2、配置核心过滤器(控制器) 3、建立struts.xml的配置文件,放在应用的类路径的顶端(开发中:src目录下) 4.验证是否成功:部署到Tomcat中,启动,只要没有报错,就是OK。 5、写struts配置文件没有提示的问题 1、找到dtd,放到某一个目录中。WEB-INF/dtd 五、Struts2的执行流程全图(面试) Struts2的工作流程: 一:客户端提交一个HttpServletRequest请求,(.action或JSP页面) 二:请求被提交到一系列的Filter过滤器,如ActionContextCleanUp和FileterDispather等。 三:FilterDispatcher是Struts2的控制核心

Maven(二)

匿名 (未验证) 提交于 2019-12-03 00:22:01
一、maven父工程与子模块的拆分与聚合原理       问题描述:将ssh工程拆分为多个模块开发        1.1、拆分原理         创建一个maven project(pom),然后在创建三个子模块(maven moudule),其中三个子模块,分别为 dao、service、web,也就是将三层的内容分别独立为一个项目,进一步将耦合性降低,其中如何将他们连接起来了,看下图。                            为什么需要创建parent父工程来管理其下三个子模块呢?并让其子模块继承他呢?           继承是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复,比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义         将三层都独立分开来了,web层如何调用service层代码?service层又如何调用dao层的代码呢?           这个在没有maven之前是不可以这样做的,但是有了maven一切都不一样了,web层调用service层的代码其实很简单,因为service是一个完整的项目,那么我们在web层这个项目中想要使用别得项目中的代码,只需要通过maven的pom.xml文件编写对应的坐标

Struts2 框架总结(四) :注解方式开发

匿名 (未验证) 提交于 2019-12-03 00:22:01
改造LoginAction,使用注解方式 类上使用的注解 action 方法使用的注解 将要访问的action打上Action注解,value是访问的action的路径名,result是返回结果集,返回的字符串可以跳转到相应的路径 @Action(value="login",results={@Result(name="success",location="/login_success.html"), @Result(name="fail",location="/login_fail.html")}) 这时候可以把xml里的配置删除 LoginAction: package sdibt.fly.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import

SpringMVC 、Struts2之间的区别

匿名 (未验证) 提交于 2019-12-03 00:09:02
一、Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1、轻量――从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外, Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 2、控制反转――Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反――不是对象从容器 中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 3、面向切面――Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的――完成业务逻辑―― 仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 4、容器―

struts2入门

匿名 (未验证) 提交于 2019-12-02 23:52:01
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet, 在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。 环境搭配 .添加依赖 <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-config-browser-plugin</artifactId> <version>2.5.13</version> </dependency> pom.xml <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > <modelVersion> 4.0.0 </modelVersion> <groupId> com.huang </groupId> <artifactId> T226_struts01 </artifactId> <packaging> war <

Struts2

匿名 (未验证) 提交于 2019-12-02 23:32:01
Struts2 个人总结: 跟servlet很相似,servlet是在web.xml里面配置,在XXXservlet类里写具体实现-----取调转 Struts2 是在 web.xml声明核心过滤器,具体的配置写在struts.xml里面,而具体实现写在action类里面,套路差不多,只是要注意写业务逻辑代码 使用框架步骤 一、新建web项目 二、添加Struts2框架支持文件 添加jar包 三、新建jsp页面 引入Struts标签库 <% @taglib prefix = "s" uri = "/struts-tags" %> 四、在web.xml中添加过滤器 <!-- struts2 核心过滤器 --> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name> struts2 </filter-name> <url-pattern> *.action </url-pattern> </filter-mapping> 五、创建业务控制器XXXAction类 1