前言

Struts2框架Apache基金组织下的一个开源框架,基于MVC模式设计的Web应用开发框架。Struts 2是一个用于开发Java EE网络应用程序的开源Web应用框架,它利用并扩展了Java Servlet API,鼓励开发者采用MVC架构。目前struts2的最高版本是2.5(测试版)。

快速入门

1、下载和安装

可以从官网直接下载最新的struts开发包,官网有多个版本,使用的时候下载full版本即可。下载之后,只需要进行解压就可以使用了

2、Hello World程序

以下是建立Struts2的HelloWorld程序的详细步骤:

  • 在myeclipse中创建web project
  • 从下载的struts解压文件中导入jar包
    说明:这里的jar包为了简洁,建议直接从app目录下的struts2_blank.war中的lib目录下的jar包拷贝过来。这样做的原因是比较省事,自己找jar包太麻烦。
    其jar如下:

  • 编写web.xml,添加如下配置:
<!-- 配置struts2过滤器 --><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>
  • 编写action类文件。在src目录下创建HelloWorld.java文件,如下:
package example;public class HelloWorld {private String meg;public String getMeg() {return meg;}public void setMeg(String meg) {this.meg = meg;}public String execute(){meg = "Hello World";return "success";}
}
  • 配置structs.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><!-- 这项配置表示是否启动动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation" value="false" /><!-- 这项配置表示是否启用开发者模式,开发者模式的好处可以自动部署代码的修改,方便调试 --><constant name="struts.devMode" value="true" /><!-- name属性指定在浏览器中的访问地址,class属性指定该action对应的类的全限定名 --><action name="hello" class="example.HelloWorld"><!-- result指定该action跳转的路径,其name属性的默认值就是success,所以当name属性是success的时候可以不写name属性 --><result name="success">/index.jsp</result></action></package><!-- Add packages here --></struts>
  • 编写jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 添加这项配置表示使用struts2的标签库,就像使用jstl时一样 -->
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>struts2</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"></head><body><!-- 这是struts2自带的标签,value属性表示获取meg属性的值 --><s:property value="meg"/></body>
</html>
  • 启动服务器,在浏览器中就可以看到hello world了。至此,hello world程序建立成功。

Struts2项目开发小结

Struts2的开发步骤主要分为:

  1. 准备jar包,建议直接使用struts-blank.war项目中的jar包,这是该版本最精简的jar包了
  2. 在web.xml中添加struts2过滤器的相关配置(这个步骤在整个项目开发过程中只会编写一次)
  3. 开发Action,针对不同的功能开发不同的Action。就像在Servlet中开发不同的Servlet类似
  4. 在struts.xml配置文件中添加上一步骤开发的Action的相关配置
  5. 编写相关的结果页面

struts2表单处理

我们继续在现在的项目基础上创建一个表单,用以说明struts2中如何接受和设置参数。

  • 创建login.jsp页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>login.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    </head><body><form action="login" method="post"><table><tr><td>用户名:</td><td><input name="user.username"></td></tr><tr><td>密码:</td><td><input type="password" name="user.password"></td></tr><tr><td colspan="2"><input type="submit"></td></tr></table></form></body>
</html>
  • 创建LoginAction
package action;import bean.User;public class LoginAction {private User user;public String execute() {if ("admin".equals(user.getUsername())&& "123".equals(user.getPassword()))return "success";return "error";}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
  • 配置Action
<!-- 登录Action --><action name="login" class="action.LoginAction"><result>/success.jsp</result><result name="error">/error.jsp</result></action>
  • 创建User类
package bean;public class User {private String username;private String password;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;}}
  • 编写success.jsp和error.jsp文件

success.jsp(省略部分代码)

<body><h3><s:property value="user.username"/>,登录成功</h3></body>

error.jsp(省略部分代码)

<body>登录失败,请重新登录<a href="login.jsp">返回</a>
</body>

注意在表单name属性的书写格式:user.username。但是我们在LoginAction中并未使用任何初始化的方法构造User对象,那么值是怎么传递过来的呢?在Struts2中使用了自动绑定的机制,当LoginAction中获取user.username属性的时候,实际上会执行以下过程:

action.getUser();
//当Struts2发现获取的User对象是null的时候,调用以下的语句
action.setUser(new User());
//通过调用User类的默认构造方法,实例化User对象之后,就可以设置username的属性的值了
action.getUser().setUserName();

除了以上的方式,还可以使用Action属性获取jsp页面表单的值,就是form表单的属性写在Action中,然后添加set和get方法,同样可以获取。不过个人感觉这种方式没有上一种简洁,所以就不贴代码了。

Struts2访问Request、Session和Application对象

在Struts2中有多种方式可以访问以上三个对象,但可以分为两类:与Servlet API解耦的访问方式(也是个人推荐使用的方式,一目了然,简单清晰)和与Servlet API耦合的访问方式。下面介绍与Servlet API解耦的方式。

通过访问com.opensymphony.xwork2.ActionContext类可获取以上三个对象,方式如下:

//获取以上三个对象request = (Map) ActionContext.getContext().get("request");session = ActionContext.getContext().getSession();application = ActionContext.getContext().getApplication();//在request中放值request.put("hello", "欢迎访问");//在session放值session.put("user", user);//在Application中放值Integer counter = (Integer) application.get("counter");if(counter == null){counter = 1;}else{counter++;}application.put("counter", counter);

然后在success.jsp页面访问以上对象设置的值:

<body><h3>${requestScope.hello },${sessionScope.user.username },访问量是${applicationScope.counter }</h3></body>

Struts2框架学习之一:Hello World程序相关推荐

  1. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  2. 框架学习系列 之Struts2框架学习总结

    1 介绍 学习和使用Struts2框架有了一段时间,这里将学习心得总结在博客的文章里面.期间也参考学习了其他优秀的文章,如有错误之处欢迎指正,转载请申明原文地址,希望大家支持,谢谢. 2 What:什 ...

  3. Java之struts2框架学习

    About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架 其全新的S ...

  4. Struts2框架学习笔记_Struts2入门

    文章为学习struts的笔记,可供读者参考,有不足之处还望之指出. 参考: POJO与JavaBean的区别 Velocity Velocity官网 FreeMarker XSLT struts2 学 ...

  5. Struts2框架学习---ONE

    通过阅读本你将掌握:                    struts2框架的配置                    入门程序的实现:                    配置文件的加载顺序: ...

  6. Struts2框架学习总结(从入门到精通)

    文章目录 一.Struts2入门 struts2概述 struts2入门案例 struts2底层执行过程 struts2相关配置 struts2的核心配置文件struts.xml struts2常量配 ...

  7. Struts2框架学习Action命名空间创建方式

         Struts2框架中Action类时一个单独的javabean对象,相比struts1来说,不需要去继承任何类型或实现任何借口,表单数据包含在Action中,而Struts1则必须继承org ...

  8. Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传

    一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...

  9. Struts2框架--学习笔记(上):搭建struts2工程、struts2基本概念、struts2对页面数据的操作

    概述: Struts2框架应用于javaee三层框架中的web层.是在Struts1和webwork基础上发张的一个全新的框架. 一.搭建一个最基本的struts2工程步骤: 1.导入基本的jar包依 ...

最新文章

  1. HTTPS协议之SSL/TLS协议四次握手
  2. ActiveMQ目录结构
  3. 瑞幸咖啡生,互联网咖啡生;数据死,互联网咖啡死
  4. Handler源码剖析
  5. 本机速度文件支持的“纯” Java大数据存储
  6. Opencv——图像膨胀
  7. Portal-Basic Java Web 应用开发框架:应用篇(十一) —— 整合 Spring
  8. 卧槽,又来一个Windows神器!!!
  9. php比较营业时间,使用php以人类可读格式从数据库表打印餐厅营业时间
  10. 监听input框值得改变
  11. 9.7英寸 IPS 屏平板 选购
  12. 笔记 - Android应用架构 (Android Dev Summit 2015)
  13. Selenium菜鸟手册
  14. springboot读取xml配置文件
  15. nodebb 安装指南
  16. 5分钟搞定 微信早安推送 升级版
  17. 基于ERP的WMS系统解决方案
  18. matlab下对齿轮图片的参数提取
  19. Windows10 运行 WSA
  20. 【STM32CubeIDE和ITM SWV实现printf调试信息的打印】

热门文章

  1. 有效解决OneNote同步问题
  2. JUnit报错:Java.lang.Exception: No runnable methods解决方案
  3. centos7下安装python3 解决openssl等一系列问题
  4. IntelliJ idea 创建Web项目后web文件夹下没有WEB-INF的解决方法
  5. Google 已将“xxxx”标记为恶意扩展程序并阻止安装,解决方案
  6. 将先前的提交分成多个提交
  7. idea安装配置tomcat
  8. 电脑进不了系统怎么重装系统win11
  9. Win10怎么备份系统
  10. Python基础-文件操作