本文共 8743 字,大约阅读时间需要 29 分钟。
一、Struts2 概述
Struts 翻译:支柱
Struts 是流行和成熟的基于 MVC 设计模式的 Web 应用程序框架
POJO(Plain Ordinary Java Object)简单的 Java 对象
MVC 模式
模型视图控制器
Model View Controller
工作原理图
环境
二、Struts2 项目
项目结构
.├── pom.xml└── src ├── main │ ├── java │ │ └── com │ │ └── mouday │ │ └── HelloWorldAction.java │ ├── resources │ │ └── struts.xml │ └── webapp │ ├── WEB-INF │ │ └── web.xml │ ├── hello.jsp │ └── index.html └── test └── java
1、配置文件
(1)pom.xml
4.0.0 org.example java-demo-struts 1.0-SNAPSHOT org.apache.tomcat.maven tomcat7-maven-plugin 2.2 8080 / UTF-8 true src/main/webapp/WEB-INF/web.xml true org.apache.struts struts2-core 2.5.22 javax.servlet javax.servlet-api 4.0.1 provided
(2)src/main/webapp/WEB-INF/web.xml
Hello struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter struts2 /* index.html
(3)src/main/resources/struts.xml
/hello.jsp
2、Action
src/main/java/com/mouday/HelloWorldAction.java
package com.mouday;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport { @Override public String execute() throws Exception { System.out.println("hello action"); return SUCCESS; }}
3、视图文件
src/main/webapp/index.html
hi
src/main/webapp/hello.jsp
hello action jsp
4、访问测试
GET http://localhost:8080/hiGET http://localhost:8080/HelloWorldActionhello action jsp
三、核心文件
web.xmlstruts.xmlstruts.properties 全局属性文件,自动加载
struts.properties 常用配置
# struts.xml改动后重新加载重载 默认 falsestruts.configuration.xml.reload=true# 打开开发模式 默认 falsestruts.devMode=true# 设置浏览器缓存静态页面 默认truestruts.serve.static.browserCache=false# 被struts处理的请求后缀struts.action.extension=action,do# 服务器运行时端口号struts.url.http.port=8080
四、深入 Struts2
1、访问 Servlet API 方式
- ActionContext
- 实现 Aware 接口
- ServletActionContext
2、Action 搜索顺序
逐级向上查找3、动态方法调用
(1)指定 method 属性package com.mouday;import com.opensymphony.xwork2.ActionSupport;public class HelloWorldAction extends ActionSupport { @Override public String execute() throws Exception { System.out.println("hello action"); return SUCCESS; } public String add(){ System.out.println("add"); return SUCCESS; }}
struts.xml(简化)
/add.jsp
访问结果
GET http://localhost:8080/add.actionadd result
(2)感叹号方式(不推荐)
参考
配置文件
regex:.* /hello.jsp /add.jsp
GET http://localhost:8080/HelloWorldAction!add.actionadd result
(3) 通配符方式
regex:.* /{2}.jsp
GET http://localhost:8080/HelloWorldAction_add.actionadd result
4、指定多个配置文件
配置示例
struts.xml
hello.xml
regex:.* /{2}.jsp
访问
GET http://localhost:8080/HelloWorld_add.actionadd result
5、默认 Action
/error.jsp
访问
GET http://localhost:8080/xxxx.actionerror jsp
6、Struts2 后缀
(1)struts.xml(2)struts.properties
struts.action.extension=action,do
(3)web.xml
struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter struts.action.extension do
7、接收参数
(1)Action 属性
Action 类
package com.mouday;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Override public String execute() throws Exception { System.out.println(username); return SUCCESS; }}
路由配置
/login.html
表单页面
(2)Domain Model
新建 User 类
package com.mouday.bean;public class User { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}
Action
package com.mouday.action;import com.mouday.bean.User;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { System.out.println(user.getUsername()); return SUCCESS; }}
登录表单
(3)ModelDriven
Action
package com.mouday.action;import com.mouday.bean.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class LoginAction extends ActionSupport implements ModelDriven{ private User user = new User(); @Override public String execute() throws Exception { System.out.println(user.getUsername()); return SUCCESS; } public User getModel() { return user; }}
表单
(4)接收列表类型
User 类
package com.mouday.bean;import java.util.List;public class User { private String username; private Listlist; public List getList() { return list; } public void setList(List list) { this.list = list; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}
Action
package com.mouday.action;import com.mouday.bean.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class LoginAction extends ActionSupport implements ModelDriven{ private User user = new User(); @Override public String execute() throws Exception { System.out.println(user.getUsername()); System.out.println(user.getList()); return SUCCESS; } public User getModel() { return user; }}
表单
8、处理结果类型
Struts2 处理流程用户请求-> Stuts框架-> 控制器Action-> Stuts框架-> 视图资源
result 如果省略 name,则默认是 success
/success.jsp /success.jsp
处理结果类型:
- SUCCESS 正确执行,默认视图
- NONE 正确执行,不返回视图
- ERROR 执行失败
- LOGIN 登录视图
- INPUT 参数输入界面
Action
package com.mouday.action;import com.mouday.bean.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class LoginAction extends ActionSupport implements ModelDriven{ private User user = new User(); @Override public String execute() throws Exception { System.out.println(user.getUsername()); System.out.println(user.getList()); return SUCCESS; } @Override public void validate() { if (user.getUsername() == null || "".equals(user.getUsername()) ) { addFieldError("username", "用户名不能为空"); } } public User getModel() { return user; }}
配置
/login.jsp /login.jsp
登录框
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %>
9、局部结果和全局结果
OGNLresource
转载地址:https://pengshiyu.blog.csdn.net/article/details/106909752 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!