初识Struts2
基础了解:
框架的概念:
框架(framework)
是整个或部分系统的可重用设计概念上的结构,用于解决或处理复杂的问题。
使用框架的好处:
可重用代码、
可重用设计、
分布式组件管理,便于组件的复用与分离、
结构统一
降低开发成本
JavaEE中的框架:
Struts:java领域最著名的框架,是MVC设计的事实标准。
Spring:JavaEE应用程序的集成框架,任何java程序都能从中受益。
Hibernate:最著名的ORM框架,实现数据层操作。
Struts2框架的介绍
Struts2是Struts1的下一代产品,是再Struts和webwork的技术基础上进行了合并的全新MVC框架。
因为Struts2框架基本以WebWork为技术核心,
可以说Struts2相当于WebWork2.0。
Struts2相对于Struts1的优势:(八个知识点重点学习)
(1)
与JSP/Servlet低耦合
(2)业务模型不需要考虑线程安全
(3)业务模型为POJO类
(4)表单模型的简化
(5)丰富的视图技术支持
(6)AOP和拦截器的使用
(7)完善的数据类型转换
(8)OGNL表达式的支持
Struts框架是Apache致力于推高JavaEE技术标准的产物,MVC框架的公认标准。
传统的Model2设计的缺陷:核心控制器在新增业务模型时需要同步修改Servlet业务模型,与ServletAPI耦合性高。
架构Struts2框架的步骤
(1)导入框架所需的jar包
(2)配置web.xml的核心控制器
<!-- 配置Struts核心控制器 -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 配置映射 -->
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
(3)创建模型
public class LoginAction extends ActionSupport {
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
(4)配置Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "struts-2.1.7.dtd" >
<struts>
<package name="niit" extends="struts-default">
<action name="login" class="com.niit.action.LoginAction">
<result name="input">WEB-INF/error.jsp</result>
<result name="success">login.jsp</result>
<result name="login">tag.jsp</result>
</action>
</package>
</struts>
搭建注意点:
Struts2以
过滤器作为请求的拦截手段
核心控制器为
StrutsPreparenAndexecuteFilter
Struts.xml需要配置在
classpath路径下
Struts.xml中的package必须配置
extends属性,且值为
struts-default
Struts2执行流程:
简单描述:
客户端发送一个请求,请求经过核心控制器(filter) ,核心控制器会根据请求的URL找到在配置文件中对应的Action,执行action前会执行相关拦截器操作,然后找到对应的返回视图,将处理得到的数据一并返回给客户端。
分布式管理Struts.xml
Struts2允许在多个包中构建配置文件,在classpath的struts.xml统一管理。
struts.xml
<struts>
<!-- 配置文件可以分布式管理,通过导入其他文件来整合框架 -->
<include file="com/niit/action/user-action.xml"></include>
</struts>
URL的分布管理
通过设定namespace允许在URL中体现分布在不同package中的action
<package name="java" extends="struts-default" namespace="/user">
</package>
属性驱动
模型驱动
属性驱动
JSP页面的表单元素指定name属性
Action类中声明同名的属性
提供属性的setter和getter方法
public class LoginAction extends ActionSupport {
//设置与表单元素name同名的属性,用以获取请求提交的数据
private String userName;
private String password;
- @Override
public String execute() throws Exception {
System.out.println(userName);
System.out.println(password);
System.out.println("进入了LoginAction");
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;
}
}