第一章Struts2初体验
01.Struts 2及其优势
Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点
Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性
Struts官网
apps目录:Struts2示例应用程序
docs目录:Struts2指南、向导、API文档
lib目录:Struts 2的发行包及其依赖包
src目录:Struts 2项目源代码
02.Struts 2初体验(登陆用户)
案例:使用Struts 2实现:输入用户姓名,然后输出欢迎信息
使用Struts 2 开发程序的基本步骤
1、加载Struts2 类库
2、配置web.xml文件
3、开发视图层页面
4、开发控制层Action
5、配置struts.xml文件
6、部署、运行项目
步骤一:加载struts类库
因为我们用的是maven所以引入以下依赖,maven会帮我们自动导入其他包:
<!--Servlet API-->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.16.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.struts.xwork/xwork-core -->
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.16.3</version>
</dependency>
步骤二:配置web.xml文件
代码:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!--过滤器-->
<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>
步骤三:开发视图层页面
步骤四:开发控制层Action
实现Action接口并重写方法:
零散属性装配
public class LoginAction implements Action {
private String username;
private String password;
public String execute() throws Exception {
if (username.equals("admin")&&password.equals("admin")){
return SUCCESS;
}else {
return LOGIN;
}
}
步骤五:配置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>
<!-- 配置文件中只要添加以下配置,那么以后修改配置文件不用重启tomcat -->
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<!--零散属性装配-->
<action name="islogin" class="cn.happy.day01.LoginAction">
<result name="success">day01/index.jsp</result>
<result name="login">day01/login.jsp</result>
</action>
</package>
</struts>
步骤六:部署,运行项目
03.登陆系统强化
域属性装配:
首先创建一个实体
修改Action:
public class LoginActions implements Action {
//引入实体
private UserInfo userInfo;
public String execute() throws Exception {
if (userInfo.getUsername().equals("admin")&&userInfo.getPassword().equals("admin")){
return SUCCESS;
}else {
return LOGIN;
}
}
修改登陆页面:
修改欢迎页面:
ModelDriven:
在Action实现另外一个接口即可!
即可避免jsp页面的不灵活问题!
04.Struts2访问Servlet API
在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢?
解析:将用户名放入session 两种方案
1. 与Servlet API解耦的访问方式
--->01.使用ActionContext类获取ServletAPI对象对应的Map对象
--->02.Struts2向Action注入ServletAPI对象对应的Map对象
- 与Servlet API耦合的访问方式
--->01.通过ActionContext的子类ServletActionContext实现
--->02.向Action实例注入Servlet API对象
解耦方式:
方案一: 对Servlet API进行封装 ,借助ActionContext
供了三个Map对象访问request、session、application作用域
方案二:向Action中注入ServletAPI对象对应的Map对象
耦合方式:
方案一:通过ActionContext的子类ServletActionContext实现
方案二:向Action实例注入Servlet API对象
05.Struts2开发流程图