Struts2 基础
标签: JAVA框架
一
1.表现层 Struts2 代替Servlet
原理:经过过滤器代替Servlet
2.Servlet和过滤器对比
Servlet:
void init(ServletConfig arg0)//初始化
void service(ServletRequeest arg0)//服务
void destroy()//销毁
Filter
void init(FilterConfig filterConfig)
void doFilter(ServletRequest request,ServletResponse
void destroy()
MVC开发模型中Servlet作为控制器
二 strusts2 是基于MVC开发的一个框架,它属于表现层框架
三 如何搭建Struts2开发环境
1.在src目录下,创建配置文件名为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>
</struts>
2.在WEB-INF中配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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>
</web-app>
4 验证
部署到tomcat中,启动,如果没有报错,配置成功
四、Struts2案例
1.发送请求给框架
<a href="${pageContext.request.contextPath}/hello.action">点我,看到显示信息 </a><br>
2.修改struts.xml配置文件
<package name="p1" extends="struts-default">
<action name="hello" class="com.cd.action.HelloWorldAction" method="sayHello">//method为调用方法
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
</action>
</package>
3.编写动作类和方法(返回值为String的方法)
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
4.编写 显示的jsp页面
五、struts2的配置文件每次加载都是按照以下顺序,若配置相同的一个属性,则最后配置的起作用
1.default.properties:(jar包)org.apache.struts2(只能看)
这里面配置了struts2的启动和设置
2 struts-default.xml:struts2-core-2.3.34.jar中(只能看)
3.struts.xml:在src文件夹下 自己定义的,推荐使用修改
4. struts.properties:在src文件夹下(不推荐使用)
5.web.xml:配置过滤器时,指定参数不推荐
六、package元素(相当于java中的包)
属性:
name 必须的,配置文件要唯一
extends 指定父包 会把父包中的配置内容继承下来,一般需要直接或者间接的继承一个叫做"struts-default"的包
abstract 是否是抽象包 如果是,该包不能有action子元素
namespace 指定名称空间 一般以/开头;该包下的动作访问路径就为namespace+动作名称
七:action 元素 定义一个动作
属性:
name 必须的,动作名称 用于用户发起请求,在包中要唯一
class 指定动作类的全名
method 指定动作类的动作方法
八:动作类 三种方式
1.定义普通的类和方法
2.实现Action接口,主要使用Action里面的常量
3.继承ActionSupport(推荐)
提供了一下基本的功能,比如验证和国际化消息提示
动作方法
public String XXX(){
}
九 通配符
<!--
<action name="*User" class="com.cd.action.UserAction" method="{1}User">
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
</action>
-->
<action name="*_*" class="com.cd.action.{2}Action" method="{1}{2}" >
<result name="success">/{1}success.jsp</result>
<result name="error">/index.jsp</result>
</action>
十、动作类中获取ServletAPI
通过org.apache.struts2.ServletActionContext类里面的
getRequest和getResponse获取请求和响应对象