Struts2:
struts2是一个基于mvc思想模式的表现层技术框架
主要是为了把多个模块的servlet合并成为一个通用的统一的servlet
开发步骤:
首先要导包,把Struts2的核心包导入进项目下
然后在web.xml中进行配置过滤器,因为Struts2是通过过滤器来进行实现对servlet的操作,
<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>/*</url-pattern>
</filter-mapping>
编写一个Action类,只是一个普通的class,需要一个字符串的返回值,用来提供给struts.xml
进行一个页面的跳转和转发
在src的类路径下创建一个struts.xml进行对struts的配置
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- 该文件默认情况下必须放在项目的src目录下 -->
<struts>
<!-- 包 -->
<package name="type" namespance="/" extends="struts-default">
<!-- 配置一个action -->
<action name="typeQuery" class="gz.itcast.web.TypeAction" method="query">
<!-- 配置视图 (默认转发(-->
<result name="list">/list.jsp</result>
</action>
</package>
</struts>
这样的对struts的简单配置在浏览器输出项目名和struts配置文件中的namespace的值和action中name,就可以进行访问了
struts-default.xml的解读
1)声明了一些struts2框架使用到的对象:
<bean class = "org.apache.struts2.views.jsp.ui.OgnlTool" />
......
2)声明了一个默认包
<package name="struts-default" abstract="true" >struts2的默认包,声明了struts2的核心功能
(例如:接收参数,拦截器,文件上传下载,国际化,表单数据验证等)
作用是让开发者定义struts.xml文件的时候去继承默认包
<package name="type" namespace="/" extends="struts-default" >
3)声明了视图类型的定义
<result-types>
<result-type name="chain" class="..." />
定义的类型在action的result中的type属性可以进行定义:
dispatcher:默认的,表示转发到一个页面
chain: 重定向到一个页面
redirect: 转发到另一个Action
redirectAction:重定向到另一个Action
Stream:专门用于输出字节流(下载文件时多使用)
4)声明了系统默认的拦截器
过滤器:是Servlet的组件之一,必须依赖Servlet的环境。可以拦截的是任何请求和响应,包括Action
拦截器:是struts2的组件之一,必须依赖struts2环境。只能拦截的是Action
struts.xml的解读
在src的类路径下进行创建配置文件
<package name="type" namespace="/" extends="struts-default">
package:代表是一个包,用于区分action和管理action的
name:包名,用于区分不同包的
extends:继承,用于继承另外的一些包,如果继承了一个父包,那么当前包就把父包的所有内容继承下来了,
namespace:名称空间,用于区分不同包的访问名称,如果两个包下面有相同的action访问名称,则需要名称空间来区分
abstract:表示是抽象包,里面不能包含action。
<action name="demo2" class="mjf.Demo2Action" method="query" >
action:代表的一个用户请求
name:访问名称,用于访问该action的时候使用的
class:操作类,包含每个模块代码逻辑
method:操作方法,每个操作代码逻辑
<result name="succ" type="chain">demo2</result>
result:代表一个视图
name:视图名称。在操作方法中需要返回一个name
type:视图类型,参考struts-default.xml的<result-types>的类型
struts2是一个基于mvc思想模式的表现层技术框架
主要是为了把多个模块的servlet合并成为一个通用的统一的servlet
开发步骤:
首先要导包,把Struts2的核心包导入进项目下
然后在web.xml中进行配置过滤器,因为Struts2是通过过滤器来进行实现对servlet的操作,
<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>/*</url-pattern>
</filter-mapping>
编写一个Action类,只是一个普通的class,需要一个字符串的返回值,用来提供给struts.xml
进行一个页面的跳转和转发
在src的类路径下创建一个struts.xml进行对struts的配置
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<!-- 该文件默认情况下必须放在项目的src目录下 -->
<struts>
<!-- 包 -->
<package name="type" namespance="/" extends="struts-default">
<!-- 配置一个action -->
<action name="typeQuery" class="gz.itcast.web.TypeAction" method="query">
<!-- 配置视图 (默认转发(-->
<result name="list">/list.jsp</result>
</action>
</package>
</struts>
这样的对struts的简单配置在浏览器输出项目名和struts配置文件中的namespace的值和action中name,就可以进行访问了
struts-default.xml的解读
1)声明了一些struts2框架使用到的对象:
<bean class = "org.apache.struts2.views.jsp.ui.OgnlTool" />
......
2)声明了一个默认包
<package name="struts-default" abstract="true" >struts2的默认包,声明了struts2的核心功能
(例如:接收参数,拦截器,文件上传下载,国际化,表单数据验证等)
作用是让开发者定义struts.xml文件的时候去继承默认包
<package name="type" namespace="/" extends="struts-default" >
3)声明了视图类型的定义
<result-types>
<result-type name="chain" class="..." />
定义的类型在action的result中的type属性可以进行定义:
dispatcher:默认的,表示转发到一个页面
chain: 重定向到一个页面
redirect: 转发到另一个Action
redirectAction:重定向到另一个Action
Stream:专门用于输出字节流(下载文件时多使用)
4)声明了系统默认的拦截器
过滤器:是Servlet的组件之一,必须依赖Servlet的环境。可以拦截的是任何请求和响应,包括Action
拦截器:是struts2的组件之一,必须依赖struts2环境。只能拦截的是Action
struts.xml的解读
在src的类路径下进行创建配置文件
<package name="type" namespace="/" extends="struts-default">
package:代表是一个包,用于区分action和管理action的
name:包名,用于区分不同包的
extends:继承,用于继承另外的一些包,如果继承了一个父包,那么当前包就把父包的所有内容继承下来了,
namespace:名称空间,用于区分不同包的访问名称,如果两个包下面有相同的action访问名称,则需要名称空间来区分
abstract:表示是抽象包,里面不能包含action。
<action name="demo2" class="mjf.Demo2Action" method="query" >
action:代表的一个用户请求
name:访问名称,用于访问该action的时候使用的
class:操作类,包含每个模块代码逻辑
method:操作方法,每个操作代码逻辑
<result name="succ" type="chain">demo2</result>
result:代表一个视图
name:视图名称。在操作方法中需要返回一个name
type:视图类型,参考struts-default.xml的<result-types>的类型
内容:需要跳转的路径,如果是页面需要携带斜杠
下面是一些示例代码:
一个action类:
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Demo1 extends ActionSupport {
public String list(){
System.out.println("sss");
return "list";
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return "list";
}
}
struts.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8" />
<package name="default" namespace="/" extends="struts-default">
<!-- 在包中只能拥有一个唯一名字的action,result中name的属性表示方法返回的字符串 -->
<action name="Demo1" class="example_01.Demo1" method="list">
<result name="list">/index.jsp</result>
</action>
<!-- 在result中有type类型,默认为转发,可以为chain、redirect、redirectAction
redirect:表示result中的功能为重定向
redirectAction:表示result中的功能为重定向到另一个action
chain:表示result中的功能为转发到另一个action
<action name="demo1" class="example_02.demo1" method="list">
<result name="list" type="chain">Demo1</result>
</action>
<action name="demo2" class="example_02.demo1" method="list">
<result name="list" type="redirectAction">Demo1</result>
</action>
-->
<action name="demo3" class="example_02.demo1" method="list">
<result name="list" type="redirect">/index.jsp</result>
</action>
<!-- 通配符的用法,*表示通配,要取得*的内容使用{index}
index:表示第几个*号,从1开始算起,通配符只能在action的name中使用
-->
<action name="demo1_*" class="example_02.demo1" method="{1}">
<result name="list">/index.jsp</result>
</action>
</package>
</struts>
web.xml文件:
<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>/*</url-pattern>
</filter-mapping>
页面显示如图:
今天通过学习struts2框架,以后能够比较方便去改写代码,但是效率没有jsp和Servlet的高,这是一个比较的缺点