Struts2框架学习之一:Hello World程序
前言
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的开发步骤主要分为:
- 准备jar包,建议直接使用struts-blank.war项目中的jar包,这是该版本最精简的jar包了
- 在web.xml中添加struts2过滤器的相关配置(这个步骤在整个项目开发过程中只会编写一次)
- 开发Action,针对不同的功能开发不同的Action。就像在Servlet中开发不同的Servlet类似
- 在struts.xml配置文件中添加上一步骤开发的Action的相关配置
- 编写相关的结果页面
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程序相关推荐
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- 框架学习系列 之Struts2框架学习总结
1 介绍 学习和使用Struts2框架有了一段时间,这里将学习心得总结在博客的文章里面.期间也参考学习了其他优秀的文章,如有错误之处欢迎指正,转载请申明原文地址,希望大家支持,谢谢. 2 What:什 ...
- Java之struts2框架学习
About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架 其全新的S ...
- Struts2框架学习笔记_Struts2入门
文章为学习struts的笔记,可供读者参考,有不足之处还望之指出. 参考: POJO与JavaBean的区别 Velocity Velocity官网 FreeMarker XSLT struts2 学 ...
- Struts2框架学习---ONE
通过阅读本你将掌握: struts2框架的配置 入门程序的实现: 配置文件的加载顺序: ...
- Struts2框架学习总结(从入门到精通)
文章目录 一.Struts2入门 struts2概述 struts2入门案例 struts2底层执行过程 struts2相关配置 struts2的核心配置文件struts.xml struts2常量配 ...
- Struts2框架学习Action命名空间创建方式
Struts2框架中Action类时一个单独的javabean对象,相比struts1来说,不需要去继承任何类型或实现任何借口,表单数据包含在Action中,而Struts1则必须继承org ...
- Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传
一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...
- Struts2框架--学习笔记(上):搭建struts2工程、struts2基本概念、struts2对页面数据的操作
概述: Struts2框架应用于javaee三层框架中的web层.是在Struts1和webwork基础上发张的一个全新的框架. 一.搭建一个最基本的struts2工程步骤: 1.导入基本的jar包依 ...
最新文章
- HTTPS协议之SSL/TLS协议四次握手
- ActiveMQ目录结构
- 瑞幸咖啡生,互联网咖啡生;数据死,互联网咖啡死
- Handler源码剖析
- 本机速度文件支持的“纯” Java大数据存储
- Opencv——图像膨胀
- Portal-Basic Java Web 应用开发框架:应用篇(十一) —— 整合 Spring
- 卧槽,又来一个Windows神器!!!
- php比较营业时间,使用php以人类可读格式从数据库表打印餐厅营业时间
- 监听input框值得改变
- 9.7英寸 IPS 屏平板 选购
- 笔记 - Android应用架构 (Android Dev Summit 2015)
- Selenium菜鸟手册
- springboot读取xml配置文件
- nodebb 安装指南
- 5分钟搞定 微信早安推送 升级版
- 基于ERP的WMS系统解决方案
- matlab下对齿轮图片的参数提取
- Windows10 运行 WSA
- 【STM32CubeIDE和ITM SWV实现printf调试信息的打印】