Java学习路线-62:Struts2
发布日期:2021-07-01 06:11:39 浏览次数:2 分类:技术文章

本文共 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 方式

  1. ActionContext
  2. 实现 Aware 接口
  3. 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 List
list; 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

处理结果类型:

  1. SUCCESS 正确执行,默认视图
  2. NONE 正确执行,不返回视图
  3. ERROR 执行失败
  4. LOGIN 登录视图
  5. 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、局部结果和全局结果

OGNL

resource

转载地址:https://pengshiyu.blog.csdn.net/article/details/106909752 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java学习路线-63:maven整合ssm-spring+struts+mybatis
下一篇:Java学习路线-61:MyBatis声明式事务

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月05日 02时31分02秒