提交之后会请求URL为login的页面,框架拦截器拦截,搜索Struts.xml中该URL所对应的Action控制器,转向具体的控制器,在我们写的LoginAction控制器中,我们获取表单提交的参数并做简单判断...这就是一个简单的Struts2框架的请求和响应过程,可以看到整个框架的核心是主拦截器和各种控制器Action,下面我们具体看看控制器的相关知识。...中的两个参数,在核心拦截器跳转LoginAction时,将两个请求参数自动赋值给LoginAction的两个实例变量。...需要注意的是,对于LoginAction中的这两个实例变量,是需要提供setter和geter方法的,我们的核心拦截器在跳转LoginAction的时候也是通过setter方法来对具体的实例参数进行赋值的...那我们在Action控制器中没法直接操作Servlet的一些对象,例如:request,response等,但是Struts2框架提供了一个工具类,可以为我们提供这些对象。
这个*的意思就相当于定义变量,{1}就是使用变量,form中的action传递的参数就给了*。所以传入regist就是*为regist,而{1}就是使用了*,所以{1}也为regist。...2.5.2 配置详解 是为Action类的返回值指定跳转方向的,在Struts 2框架中,一个完整的配置为: ?...是为返回结果设置参数的。 Struts 2中支持多种结果类型如下: ? 1.dispatcher类型--转发:属于同一请求,可以传递参数,浏览器地址栏不变化。...parse:指定是否允许在location参数值中使用表达式,如“/main.jsp?name=${name}”,在实际运行时,这个结果信息会替换为用户输入的“name”值,该参数默认值是true。...此段代码释义:有regist.action请求,由org.action.LoginAction的regist的方法处理,若返回值为success,则重定向到/test2/login.action,然后。
="hzd" />--为该JavaBean的构造方法传递参数 4)日期标签:用以输出一个格式化的日期对象,name表示要输出的对象,format表示输出的日期格式 hzd--参数username=hzd给test.jsp页面 8)传递参数标签:用来为其他标签提供参数,所以一般是嵌套在其它标签的内部...hzd--这种方式的参数值会以Object的格式放入stack 9)值栈标签:用以加入一个值到值栈中 –它会按照一定的顺序查找资源文件,直到找到定义HellowWord标签的资源文件为止 12)链接标签:用于创建一个URL链接,并可以通过标签提供request参数 <s:url id...(Request) (2) Container通过web.xml映射请求,并获得控制器(Controller)的名字 (3) 容器(Container)调用控制器(StrutsPrepareAndExecuteFilter
首先一点,校验文件的命名是有要求的并且一般一个校验文件只服务一个Action,所以该文件的命名规则如下: -validation.xml 所以上述我们为LoginAction创建的校验文件名为...我们由field元素可以定位到Action实例中具体的某个属性,使用field-validator元素为给属性指定校验器(Struts默认提供的检验器,具体有关内置的校验器后文详细介绍),param 元素用于指定校验的参数...该校验器要求比第一种必填校验器严格一点。它还具有一个参数:trim。该参数用于剔除字段中前后的空白,默认值为true。这一点也是比较容易理解的,此处不再赘述。 第三种校验器,整数校验器。...它有两个参数,min,max,一个是指定该字段的值可能出现的最小值,一个则是指定该字段的值可能出现的最大值。...它要求该字段满足一个基于ognl的表达式。该校验器具有一个参数,expression,该参数指定了一个表达式。下面我们看一个具体的例子: //表达式要写在 <!
Spring Security 是 Spring 家族中的一个安全管理框架,能够基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案。...它提供了一组可以在Spring应用系统中灵活配置的组件,充分利用了 Spring的IoC、DI和AOP等特性,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。...添加Controller 创建SecurityController 类,在类中添加访问页面的入口。...测试验证 配置完成后,重启项目,访问地址:http://localhost:8080/,页面会自动弹出一个登录框,如下图所示。...修改Controller控制器 修改之前的SecurityController控制器,增加content页面路由地址,示例代码如下: @RequestMapping("/") public String
版权声明:本文为博主原创文章,未经博主允许不得转载。...为: package com.danny.user.action; public class LoginAction { private String username; private...我想你只能呵呵了吧~~ 这时候如果再用第一种方式也就是属性驱动来传值,您肯定能够想象到action中能有多乱吧,光定义属性的代码就能占200行~~ 所以这时候可以考虑用struts2中的另一种传值方式—...如果上篇博客中的LoginAction需要用模型驱动,那么只需要添加一个模型User.java,修改一下LoginAction即可。...比如表单中某一个input的name属性值为“username”,那么相应的get方法名为“getUsername”或“getusername”(不区分大小写)。
本例实现最简单的登陆,仅包含两个页面:login.jsp 用来输入用户名和密码;success.jsp 为登陆成功页面;error.jsp为登陆失败页面。...DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 恭喜您:...页面提交之后,去struts.xml中寻找对应action,进而找到LoginAction,LoginAction根据表单中input的name属性来获取值,规则就是:input的name属性值要和LoginAction...中相对应的get、set方法后面的值一样,与LoginAction的字段没有关系:比如input的name属性值为“username”,那么LoginAction重对应的字段的get方法名应为“getUsername...action,这个name为”login”的action就对应com.danny.user.action包下的LoginAction。
我们虽然没有显式的为LoginAction 的两个实例属性赋值,但是在index页面中我们依然可以获取到该属性的值,他们的值对应于login表单页面提交过来的值,也就是说从表单页面提交到LoginAction...实例的map属性添加一条信息:key为1,key为1的value值为walker的username属性的值为该文本框的值。...该抽象类为我们提供了三个convertValue方法重载,他们之间的关系就是:参数多的重载调用参数少的。...这里需要对第一个参数value做一点说明,该参数的值实际上是一个String数组,一般情况下我们的参数被存放在索引位置为0的元素中,其余元素内容只有在表单是下拉框的时候将所有下拉框中的选项传过来(如果不使用下拉框一般只用到该数组的第一个元素...注册全局类型转换器需要提供一个文件,该文件名称如下: xwork-convertion.properties 为某个属性注册类型转换器的代码是一样的,只是该文件可以在全局使用。
3)Strust2的控制器组件是Struts2整个框架的核心,由两部分组成: 核心控制器SturtsPrepareAndExecuteFilter 业务控制器Action 4)核心控制器...5)Action是由用户定义的业务控制器,由三种实现方式: 普通的POJO类,通常包含一个无参数的execute()方法,返回值为字符串类型 继承ActionSupport类(含有一个execute...productID=1001"> 表示调用productAction下的edit方法来处理请求,并传递一个参数,参数名为productID,值为1001 9)通配符的使用 假若声明如下action...redirectAction:采用ActionMapperFactory提供的ActionMapper进行重定向,重定向到另一个Aciton 配置redirectAction...例如: <exception-mapping result="error" exception
Struts2框架对控制器进行了统一的和规范。...image.png Struts2接收参数 使用Action属性接收 public class LoginAction extends ActionSupport { private String.../form> Action中五种内置属性 (1) SUCCESS Action正确的执行完成,返回相应的视图,success是name属性的默认值。...(4) LOGIN Action因为用户没有登录的原因没有正确执行,将返回该登录视图,要求用户进行登录验证 (5) INPUT Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入界面...,一般在应用中,会对这些 参数进行验证,如果验证没有通过,将自动返回该视图。
以下以MVC框架开发中为基础,示例讲解: 在基础控制器类中:Conrtoller.class.php <?...php /** * 基础控制器类 */ class Controller { /** * 跳转 * $url 目标url * $info 提示信息 * $time 等待时间...Controller.class.php基础控制器类后,就可以调用定义的跳转提示。...*/ public function loginAction() { // 载入当前的视图文件 $this- display('login.html'); } /**...c=Admin&a=login','您已退出后台登录!'); } } 当然,这里是在MVC中实现的,你也可以把jump()单独提出来进行使用。 附上一个效果图: ?
首先我们准备Struts2的包,Struts2的包我会提供,里面一共有9个包。将这个9个包拷贝到WEB-INF的lib目录下即可。少一个,都会报错的! 第二部,配置Web.xml文件 <?...接下来有一个method="xxx" ,这是值具体映射到类中的某个方 法,如果不写就是默认的execute()方法。 ...现在我们要明白这样一个流程,当Tomcat发布网站的时候,会通过Web.xml加载Struts的控制器和拦截器,然后如果前端页面有任何的请求都会被Struts拦截,接着通过Struts.xml的配置映射到相应的...这里我们看到,后台不需要写request来获取前端传过来的值,因为我们有了set访问器,通过Struts自动传了值,简化了代码 一个最简单的Struts框架就搭建了。 ...>result 将后台的result的字符串变成Json格式的数据再传递到后台标签就是一个参数赋值的标签,把result赋值给了root。
:子元素可向验证程序传递参数 :子元素为校验失败后的提示信息,如需国际化,可为message指定key属性,key的值为属性文件中的key。...trim参数. 默认为true, 表示验证该字段值前先剔除前后空格. stringlength: 验证一个非空字段值是否满足长度要求. minLength:相关字段的最小长度....若没给出这个参数, 该字段将没有最小值限制 max: 相关字段的最大值....若没给出这个参数, 该字段将没有最大值限制 date: 确保某给定日期值在一个给定范围内 max:相关字段的最大值. 若没给出该参数, 该字段无最大值限制 min:相关字段的最小值....若没给出该参数, 该字段无最小值限制 email: 检查给定 String 值是否是一个合法的 email url: 检查给定 String 值是否是一个合法的 url regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配
当它看到一个action的name值为 * 的时候,就决定用此action来响应此次请求,此时 * 的值为login,{1}表示name中的第一个 * 的值,此处自然也是login,于是显式调用LoginAction...在此例中优先级为: loginABC > *ABC > * 最后一个有关Action配置的是,为Action配置默认值,也就是在URL无法匹配到具体的某个Action的时候,默认的Action会去响应此...配置result元素时候通常是需要指定两个属性: name:对应于Action返回的字符串的值 type:指定结果类型,默认值是dispatcher,可以省略 对于上面的两个属性,name属性中指定了一个字符串...它和dispather很是类似,只不过dispather是同一次请求的转发操作,而redirect则是重新的一次request,会丢失上次请求中的所有参数值。...处理完成之后,通过result元素的type属性指定了下一个action为err。
如果需要修改store中的值唯一的方法就是提交mutation来修改....这个回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数: const store = new Vuex.Store({ state: { isLogin:false...这个选项更像是事件注册:“当触发一个类型为 increment 的 mutation 时,调用此函数。”...// 在action中也定义一个loginAction方法。...接收函数时: loginAction(context,payloads){ // payloads就是你的参数。
框架帮我们封装了很多常用的功能 把Web带过来的参数自动封装到JavaBean中[以前,我们刚开始学的时候是单个单个来获取参数的,后来我们又使用了BeanUtils写工具方法来帮我们封装]。...来管理整个项目,也就是说:整个web项目只有一个核心的控制器 问题: ①:我们在之前是直接指明Servlet的映射路径了,现在要ActionServlet处理所有的请求,我们只要定一个规则:只要后缀为....改变需求的时候需要更改源代码 本博文主要模拟Struts的开发流程 使用一个ActionServlet核心控制器来管理全部的Web请求,写XML配置文件,读取配置文件。...】、stream【文件下载的时候用】…跳转结果的类型也在这里定义了 interceptor-stack是拦截器的栈 拦截器有32个,我们可能会使用很多的拦截器,不可能一个一个来调用,于是提供了拦截器栈…...---- name name是action处理返回的值 ---- type type是跳转的类型 ---- 文本值 文本值是跳转的路径 ---- 细节 前边已经说了,一个package应该对应一个业务模块
-- --> <!...@RequestMapping无需任何path参数自动装载类名或方法作为url路径匹配。...7)(可选)请求到视图名翻译器(RequestToViewNameTranslator)配置,RequestToViewNameTranslator可以在处理器返回的View为空时使用它根据Request...return的字符串 加上前缀和后缀,变成一个 可用的url地址 。
success.jsp使用查看此时值栈中的数据 其中的属性必须要有get,set方法 LoginAction //实现ModelDriven接口指定的泛型为JavaBean类 public...success.jsp页面中访问LoginAction属性的值(前提是属性必须有get,set方法) LoginAction中的属性是一个User对象,那么我们既可以获取这个User对象,之后在获取User...% 符号 当标签的属性为字符串类型时,计算OGNL表达式的值。...实现 假设我们有两个Action,一个是SimpleAction,一个是LoginAction(上面的,有一个属性为user),我们在在配置的时候,发出请求给SimpleAction,之后跳转到LoginAction...(result的type类型为chain即可),之后跳转到success.jsp,那么此时的值栈中的action就有两个了,栈顶的是SimpleAction,第二个是LoginAction。
MethodFilterInterceptor抽象类 MethodFilterInterceptor类重写了AbstractInterceptor类的intercept(ActionInvocationinvocation)方法,但提供了一个...-- 为拦截器指定参数值 --> 拦截方法的拦截器 改名后的拦截方法过滤拦截器 input,back,cancel,browse 每一个拦截器都可以配置参数...,有两种方式配置参数,一是针对每一个拦截器定义参数,二是针对一个拦截器堆栈统一定义所有的参数,例如: <param name
领取专属 10元无门槛券
手把手带您无忧上云