1:Struts的由来
Struts1 - > 2000~2007 火,第一个非常成功的MVC框架 。 高耦合。高度的依赖于Servlet容器。
2003开始就有了很多的其他的MVC框架
Webwork - struts2
Jsf - SUN
springmvc
记住关键的一个概念就是Struts2是webwor升级版本
下载struts2
Apache Struts is a free, open-source, MVC framework for creating elegant, modern Java web applications. It favors convention over configuration, is extensible using a plugin architecture, and ships with plugins to support REST, AJAX and JSON.
elegant:优雅的
extensible: 可扩展的
下载以后:
一个Struts2项目要求的最少的包:
4:快速示例开发第一个struts2的示例
步1:创建一个web项目 - 添加以下的依赖
<dependency>:使用的就是maven 关键的就是依赖 它的下载地址 mvnrepository.com
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5</version>
</dependency>:描述的意识
导入的包是:
步2:在web.xml中配置s2的核心过虑器
<filter>
<filter-name>s2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>s2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
步3:在classpath下创建struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">:约束
<struts>
</struts>
步4:开发第一个Action
package cn.struts2.action;
public class OneAction {
/**
* Struts2的action要求<br>
* 1:pojo - 简单Java对象 - Plain Ordiary Java Object
* 2:可以实现接口org...xwork.Action
* 2:可以继承org...xwork.ActionSupport
* 4:要求可以与用户交互的方法必须是 public String xxx(){...}
* 默认是execute(){...}
*/
public String execute(){
System.err.println("Hello:"+this);
return "success";
}
}
配置到struts.xml中去:
<!-- 配置第一个Action -->
<package name="one-package" extends="struts-default"> //继承struts2的默认的包使用里面的信息
<!-- 在一个包中,可以声明多个action,name是指如何访问到这个action -->
<action name="one" class="cn.struts2.action.OneAction">
<!-- 配置返回success字符串时,指的页面是哪儿 -->
<result name="success">/jsps/show.jsp</result>
</action>
</package>
步5:访问
<body>
<a href="one">One</a>
<br>
<a href="${pageContext.request.contextPath}/one.action">One</a>
</body>
两种的访问方式
访问输出的Action的内存:这就说明:Action是多例的。
Hello:cn.struts2.action.OneAction@46dcef
Hello:cn.struts2.action.OneAction@37bf41
Hello:cn.struts2.action.OneAction@14e5ba3
Hello:cn.struts2.action.OneAction@47b191
Hello:cn.struts2.action.OneAction@11ac60f
Hello:cn.struts2.action.OneAction@48b2a9
还有一点就是 serrvlet|是单例的
问题:
1:为什么写 one.action
因为:strtus2里面默认的扩展名就是为action 可以修改
2:为什么要继承 extends=struts-default
因为:在strtus2里面默认有拦截器 还有属性都是再这放着