strut2总结(1)
2016-09-18 22:59
113 查看
struts2是MVC框架的体现 他主要是将各个action通过拦截器的作用 来处理不同的业务逻辑
Struts2框架是MVC流程框架,适合分层开发。框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计。
关于这个的介绍可以详细看这篇博客
http://blog.csdn.net/lishuangzhe7047/article/details/21654169
首先是加载需要的jar文件
这是所需的jar文件 随后配置web,xml文件 来配置filter文件
随后在javaResources的src目录下新建一个struts.xml文件 表示配置strut文件
这个表示配置的struts文件
随后用package来表示一个模块
用struts文件进行框起来 表示是struts范围内的
随后用package来组成action的一个模块 namespace 表示默认的后缀名 随后extend表示默认的扩展
随后配置action的名字 表示访问的路径名 后面跟随处理的类 再包含一个result标签 表示返回的结果
struts2Demo表示这个项目名 loginAciton表示action名 这样匹配即可 随后就可以访问道add.jsp这个文件
在struts中,默认的是访问excute() 这个函数,也可以自定义函数 比如login
这样就要改动action标签中的信息
接下来谈一下namespace 的用法 主要是你在访问action之前可以有很多路径名 比如user
我们可以把package改编成这样
接下来讲一下action的动态方法调用 我们可以为action来匹配多个参数
这段代码的意思就是为helloWorld来匹配不同的参数 比如当访问helloWorld_add的时候 就执行HelloWorld这个类中的add方法 当返回为add的时候 就访问add.jsp这个文件
这里只是讲一下初级的匹配 更深级的匹配以后再更新
当我们访问一个不存在的action的时候 要返回一个error.jsp这个文件 这时我们可以在,package标签内匹配一个 <default-action-ref标签 这里的name值表示映射到action值中的值 随后action来映射到一个错误的界面 如下
在以上的方法中,我们访问的都是action的名字 都没有加后缀 比如.html这时 我们可以在struts.xml中加这个标签
有时候一个struts文件有可能写不过 我们可以在头部包括一个新的xml文件
获取表单中的值,有时候我们需要一个form表单 获得其中表单的值,这时我们先创建一个login.jsp 在其中创建一个form表单
有三种方法
生成getter和setter方法 随后在excute方法中可以打印输出username 整体代码如下
这样访问login.jsp文件中,填入表单的名字 就可以在后台控制器中进行访问输出
接下来是第二种方法,有时候在一个类中来保存表单的信息 不易于维护 例如有100个表单 就非常难操作 因此 我们可以新建一个User 这个类中包括了username和password
此时在excute中输出就要用user.getName()这个方法
填入表单的名称 也可以输出username
第三种方法用驱动的作用,这种方法也是比较推荐的 首先要实现ModelDriven这个接口 泛型指定为User
随后实现其方法 返回user这个类
随后user这个属性要进行实例化
这样即可,以上就是对strut2的简单部分的总结
Struts2框架是MVC流程框架,适合分层开发。框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计。
关于这个的介绍可以详细看这篇博客
http://blog.csdn.net/lishuangzhe7047/article/details/21654169
首先是加载需要的jar文件
这是所需的jar文件 随后配置web,xml文件 来配置filter文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>strutDemo</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>struts.action.extension</param-name> <param-value>html</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>配置filterurl-pattern表示拦截所有的文件/*
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter表示加载这个类
随后在javaResources的src目录下新建一个struts.xml文件 表示配置strut文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
这个表示配置的struts文件
随后用package来表示一个模块
用struts文件进行框起来 表示是struts范围内的
随后用package来组成action的一个模块 namespace 表示默认的后缀名 随后extend表示默认的扩展
extends="struts-default"
<package name="default" namespace = "/" extends="struts-default">
随后配置action的名字 表示访问的路径名 后面跟随处理的类 再包含一个result标签 表示返回的结果
<action name = "LoginAction" class = "com.kevin.test.Login" method = "login"> <result name = "success">add.jsp</result> </action>整体初级的代码就是这样
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace = "/" extends="struts-default">
<action name = "LoginAction" class = "com.kevin.test.Login" method = "login"> <result name = "success">add.jsp</result> </action>
</package>
</struts>随后在src目录下创建这个处理的类com,kevin,test,Login 这个类继承自ActionSupport类 默认执行的是excute这个方法 随后返回一个字符串 匹配result中的name 这里返回的事success随后再web-content文件下创建add.jsp即可
package com.kevin.test; import com.opensymphony.xwork2.ActionSupport; public class Login extends ActionSupport {
public String execute() throws Exception { // TODO Auto-generated method stub return SUCCESS; } }随后启动tomcat访问http://localhost:8080/struts2Demo/LoginAction
struts2Demo表示这个项目名 loginAciton表示action名 这样匹配即可 随后就可以访问道add.jsp这个文件
在struts中,默认的是访问excute() 这个函数,也可以自定义函数 比如login
这样就要改动action标签中的信息
<action name = "LoginAction" class = "com.kevin.test.Login" method = "login">表示执行login这个类中的login方法 这个方法也返回一个字符串 来匹配result中的信息
public String login(){ System.out.println(username); return "SUCCESS"; }在这个result中 根据返回的name 来找到不同的jsp文件 系统提供的有几个返回参数 例如success error等 有时我们也可以自定义返回值 例如返回login这样action标签就变为
<result name = "login">add.jsp</result>这样即可
接下来谈一下namespace 的用法 主要是你在访问action之前可以有很多路径名 比如user
我们可以把package改编成这样
<package name = "example" namespace = "/user" extends="struts-default"> <action name = "login" class = "com.kevin.test.HelloWorld"> <result name = "success">add.jsp</result> </action> </package>这样在web-content下面就要创建一个user文件夹 随后再这个下面创建add.jsp这样访问http://localhost:8080/Struts2Demo/user/login 就可以访问到add.jsp这个文件
接下来讲一下action的动态方法调用 我们可以为action来匹配多个参数
<action name="helloWorld_*" class="com.kevin.test.HelloWorld" method = "{1}"> <result name = "success">login.jsp</result> <result name = "add">{1}.jsp</result> <result name = "login">add.jsp</result> </action>
这段代码的意思就是为helloWorld来匹配不同的参数 比如当访问helloWorld_add的时候 就执行HelloWorld这个类中的add方法 当返回为add的时候 就访问add.jsp这个文件
这里只是讲一下初级的匹配 更深级的匹配以后再更新
当我们访问一个不存在的action的时候 要返回一个error.jsp这个文件 这时我们可以在,package标签内匹配一个 <default-action-ref标签 这里的name值表示映射到action值中的值 随后action来映射到一个错误的界面 如下
<package name="default" namespace = "/" extends="struts-default">创建一个error.jsp随后访问不存在的action就可以映射到这个error.jsp
<default-action-ref name = "index"></default-action-ref>
<action name = "index">
<result>error.jsp</result>
</action>
在以上的方法中,我们访问的都是action的名字 都没有加后缀 比如.html这时 我们可以在struts.xml中加这个标签
<constant name = "struts.enable.DynamicMethodInvocation" value = "true"></constant>表示开启后缀名称,这实际上是在修改 struts.properties这个文件 我们可以在web.xml这个文件中在filter进行修改
<init-param> <param-name>struts.action.extension</param-name> <param-value>html</param-value> </init-param>表示初始化的参数这样我们就可以在访问action的时候来访问这个action.html这个路径
有时候一个struts文件有可能写不过 我们可以在头部包括一个新的xml文件
<include file = "helloWorld.xml"></include>此时的helloWorld.xml文件也是一个配置的strut2.xml文件
获取表单中的值,有时候我们需要一个form表单 获得其中表单的值,这时我们先创建一个login.jsp 在其中创建一个form表单
有三种方法
<form action = "login" method = "post"> username<input type = "text" name = "username"> password<input type = "password" name = "password"> <input type = "submit" value = "submit"> </form>在这其中要指定action的名字必须和strut.xml中的配置文件中的action名字统一 随后在指定的类中创建两个私有属性username和password
private String username; private String password;首先是第一种方法
生成getter和setter方法 随后在excute方法中可以打印输出username 整体代码如下
package com.kevin.test;
import com.opensymphony.xwork2.ActionSupport;
public class login extends ActionSupport {
private String username; private String password;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println(username);
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这样访问login.jsp文件中,填入表单的名字 就可以在后台控制器中进行访问输出
接下来是第二种方法,有时候在一个类中来保存表单的信息 不易于维护 例如有100个表单 就非常难操作 因此 我们可以新建一个User 这个类中包括了username和password
package com.kevin.test; public class User { public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }此时在login这个类中就不能有username和password这两个属性,避免重复
此时在excute中输出就要用user.getName()这个方法
package com.kevin.test; import com.opensymphony.xwork2.ActionSupport; public class login extends ActionSupport { private User user; @Override public String execute() throws Exception { // TODO Auto-generated method stub System.out.println(user.getUsername()); return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }这时在form表单中就要指定是user这个类的password和username
username<input type = "text" name = "user.username"> password<input type = "password" name = "user.password">这时候访问上面这个域名http://localhost:8080/struts2Demo/login.jsp
填入表单的名称 也可以输出username
第三种方法用驱动的作用,这种方法也是比较推荐的 首先要实现ModelDriven这个接口 泛型指定为User
随后实现其方法 返回user这个类
public User getModel() { // TODO Auto-generated method stub return user; }
随后user这个属性要进行实例化
private User user = new User();随后不用执行user的get和set方法 删除去即可 整体代码如下
package com.kevin.test;随后再form表单中就不用指定User的名字 这可以避免类user的名字改变时,前面form表单中也需要改变的局限性
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class login extends ActionSupport implements ModelDriven<User>{
private User user = new User();
@Override
public User getModel() { // TODO Auto-generated method stub return user; }
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println(user.getUsername());
return SUCCESS;
}
}
<form action = "login" method = "post"> username<input type = "text" name = "username"> password<input type = "password" name = "password"> <input type = "submit" value = "submit"> </form>
这样即可,以上就是对strut2的简单部分的总结
相关文章推荐
- jQuery笔记
- 调整文字在框内的位置
- 黑苹果El Captain 10.11.2 安装
- 快速排序--C#代码篇
- 分词及词云图绘制-R语言
- SDWebImage源代码阅读(四)
- POJ1195 Mobile phones
- HDU 2527 Safe Or Unsafe(哈夫曼编码)
- # 20145220《信息安全系统设计基础》第1周学习总结
- Angular2学习笔记——在子组件中拿到路由参数
- android animator
- 文章标题
- 解决三星android拍照时返回null问题
- 算法笔记-1-最大子列和-Maximum Subsequence Sum
- Java——泛型Generic
- String、StringBuffer与StringBuilder之间区别
- 安卓BroadcastReceiver总结
- PCB板画钻孔(打洞)
- eclipse个人常用快捷键
- 在Suse Linux 11 SP4中启动eclipse时的Failed to load module "pk-gtk-module"异常