Struts2 环境搭建
环境搭建
学习使用环境
开发环境:idea 集成开发环境
服务器:tomcat 7.0.46
搭建步骤
第一步:创建Java web项目
创建一个strutsDemo项目
第二步:导入jar包
导入struts2最初需要的几个相关jar,如下图:
以上相关jar可以到 阿里云Maven库 中去找
第三步:配置web.xml文件
在下面的web.xml文件中配置struts2的前端控制器
此处是接管请求的操作
注意一点:对filter-mapping中的
<url-pattern>*.action</url-pattern>
此中间的值不一定就是 *.action
也可以是 /*就直接和我们最初接触的servlet的请求一样
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!--配置Struts2 的前端控制器
Struts2 框架的开始工作入口
接管请求
-->
<filter>
<filter-name>struts</filter-name>
<!--Struts2提供的控制器类-->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
第四步:创建action 包
在此处要注意的一点就是在创建包名的时候最后要以action结尾
例如 com.struts2.action
创建完成后在里面创建HelloAction.java 命名自定义
public class HelloAction {
/**
* 在Struts中所有的业务都为public
* 返回值为String,所有业务方法都没有参数
* 方法可以自定义,默认execute()
*/
public String execute(){
System.out.println("hello");
return "success";
}
public String HelloWorld(){
return "success";
}
}
在此类也可以去实现Action接口
此接口类在 com.opensymphony.xwork2.Action里面,不要实现错了接口
public class TestAction implements Action {
@Override
public String execute() throws Exception {
return "success";
}
}
第五步:添加struts.xml文件并配置该文件
创建文件
创建struts.xml文件时名称一定只能是这个,并且创建的位置在src根目录下
配置文件
相关的配置各个参数在代码里面进行了详细的解释
<?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>
<!--package 分模块管理
name 自定义,但是不能重复
namespace 命名空间 和url请求路径相关
例如 / 请求为 /hello.action
/user 请求为/user/hello.action
extends 必须直接或者间接继承struts-default
-->
<package name="default" namespace="/" extends="struts-default">
<!--
配置url和处理类的方法进行映射
name 为请求的名称,不用加后缀
com.opensymphony.xwork2.ActionSupport是默认类
method是指定请求的方法,默认为execute
-->
<action name="hello" method="execute" class="com.struts2.action.HelloAction">
<!--结果集的配置
name结果集名称 和处理方法的返回值匹配 默认为success 可以自定义
Struts2提供了五个放回结果:success none input error login
ACTION.SUCCESS 执行成功,并且进行跳转页面
ACTION.NONE 执行成功 不需要页面的跳转
ACTION.ERROR 执行失败
ACTION.INPUT 要执行该action需要更多的输入条件
ACTION.LOGIN 需要登录后才能执行
type 指定响应结果类型
默认dispatcher 转发
redirect 重定向
redirectAction 重定向到action
result的值为跳转页面 不加 / 相对 namespace路径,建议写绝对路径
-->
<result name="success" type="dispatcher">/hello.jsp</result>
</action>
<action name="helloWorld" method="HelloWorld" class="com.struts2.action.HelloAction">
<result name="success" type="redirect">/hello.jsp</result>
</action>
<action name="test" class="com.struts2.action.TestAction">
<result name="success" type="dispatcher">
/hello.jsp
</result>
</action>
</package>
</struts>
第六步:view页面的处理
View的页面没有过多的装饰,只是添加了一点文字
以下就是hello.jsp页面 该页面将是各个请求后到达的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello world</title>
</head>
<body>
<h3>这是我的第一个Struts2案例</h3>
</body>
</html>
第七步:调试
操作完毕后将我们的项目发布到tomcat上然后进行请求的测试
第一个请求 hello.action 我们将会看到下面的显示默认配置的是dispatcher 请求转发
第二个请求helloWorld.action 此处我们设置的redirect进行重定向页面
当点击enter后将会显示出来
页面显示出来,并且直接重定向到hello.jsp页面
以上的是action类在没有实现Action接口的操作
下面我们来看下当实现了Action接口的操作
public class TestAction implements Action {
@Override
public String execute() throws Exception {
return "success";
}
}
所对应的struts.xml文件的内容
<action name="test" class="com.xingchi.action.TestAction">
<result name="success" type="dispatcher">
/hello.jsp
</result>
</action>
之后请求test.action显示如下视图
总结
必须要注意的一点就是在创建struts.xml文件的时候名称一定只能是这个,不然的话项目对于请求url无法处理
今天学习的内容就分享到这里,大家可以在评论区留言讨论哦!