struts2(一)---编写第一个struts2项目
转载请注明:http://blog.csdn.net/uniquewonderq
1.在myeclipse中创建一个webProject名为Struts
2.导入Struts核心包。将核心包复制到/WEB-INF/lib下即可。
3.配置前端控制器
struts2使用filter来充当前端控制器,因此在web.xml中配置一个filter即可。
struts2预制了该filter的实现类,名为:
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
指定该filter处理所有请求
<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>
4.创建struts.xml
在src下,创建名为struts.xml的配置文件。
---Struts2配置文件默认要放在src下
---Struts2配置文件默认名称为struts.xml
配置struts.xml的版本信息以及DTD引用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
5.编写业务控制层Action
a.创建控制器组件,通常命名为xxxAction,该组件是一个满足javabean规范的类。
b.在Action中定义业务方法,要满足下列条件:
---方法是public的
---返回值为string类型的
---参数列表为空
c.编写业务方法
---方法内编写业务逻辑代码
---返回的字符串与struts.xml->action->result属性匹配,即根据此返回值找到对应的result。
创建名为action的包,并在该包下创建类HelloAction。
package Action;
public class HelloAction {
public String sayHello(){
System.out.println("Hello,Action");
return "success";
}
}
6.编写jsp页面
创建jsp页面
在页面上显示“hello,struts2”
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<h1>hello,Struts2!</h1>
</body>
</html>
7.配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!--
package:包,用于对action进行封装
-->
<package name="day01" namespace="/demo" extends="struts-default">
<action name="hello" class="action.HelloAction" method="sayHello">
<result name="success">
/hello.jsp
</result>
</action>
</package>
</struts>
8.测试:
部署项目,并启动tomcat,在浏览器中输入:http://localhost:8888/Struts2/demo/hello.action
其中demo对应的是,配置文件中namespace的值,hello对应的是配置文件中的action的名称,“.action”是固定的后缀,可以省略。
运行结果:
控制台输出结果:
Hello,Action
- ArrayList foreach 循环里进行元素的 remove add 操作有什么现象?
- 10个令人相见恨晚的R语言包
- 小心Windows旧版认证暴露你的系统帐户密码
- DNS Shell初体验
- 如何在Weka中加载CSV机器学习数据
- 老司机教你部署Cowrie蜜罐
- 时间序列预测如何变成有监督学习问题?
- 追踪溯源 | 希拉里邮箱泄露事件
- DNS Tunneling及相关实现
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- 从Trace和Debug来看条件编译(Conditional Compilation)
- 解码针对工业工程领域的网络攻击 Operation Ghoul「食尸鬼行动」
- EndpointAddress——不只是一个Uri[上篇]
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- CSP-201812-2-小明放学-Java
- Mac怎么设置docker国内镜像源来加速下载?
- 适合数据分析面试笔试入门的编程题
- 女同事问狗哥什么是线程池的阻塞队列?
- BAT某厂数据分析终面面经
- 通过常见的业务掌握SQL高级功能
- 滴滴出行数据分析师面试经验
- 如何制作推论统计分析报告
- 全局唯一 ID 服务的分布式ID生成系统
- SpringBoot 国际化实现跨地区的多语言切换
- MySQL 死锁产生原因和解决方法
- 手把手教你ShardingSphere和Mybatis拦截器实现特殊字段动态切换加密
- Swagger3.0官方starter诞生,可以扔掉那些野生starter了
- Prometheus 入门教程(一):Prometheus 快速入门
- 开发|ShiroConfig实现基础拦截