第一步先要学会怎么创建struts的WEB Project
我使用的是Myeclipse10的版本(话说现在myeclipse已经出到2015版本了)
先打开Myeclipse,点击File——New——Other…如下图
输入web选择web project(如下图)
输入项目名 Finish(如下图)
这样我们就创建了一个空的web项目
然后我们就要把struts2整合到这个项目里面。
步骤如下:
鼠标项目右键——Myeclipse——Add Struts Capabilities(如下图)
选择Struts2.1 url选择/* 点Finish(如下图)
这样我们就把Struts2整合到了这个web里面
工程变成如图:
其中在web.xml里面的就是配置刚刚选择的拦击url的,可以是/* 、*.action 、*.do,分别是拦截全部请求、.action请求
<filter-mapping>
<filter-name>struts2</filter-name>
<!-- <url-pattern>*.action</url-pattern> -->
<!-- <url-pattern>*.do</url-pattern> -->
<url-pattern>/*</url-pattern>
</filter-mapping>
许多东西也都是在这里面配置的例如spring的监听。
创建一个java来测试我们的struts
这个要继承ActionSupport
代码如下
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class TestAction extends ActionSupport {
private String str;//用于获取页面提交的字符串,与页面提交from表单的name相同
public String getStr() {//对应的get方法
return str;
}
public void setStr(String str) {
this.str = str;
}
@Override
public String execute() throws Exception{//<span style="color: rgb(51, 51, 51); font-family: arial; font-size: 13px; line-height: 20px;">重写excute方法,默认调用这个。
return SUCCESS;
}
}
在struts里配置:
package name可以随便起,但是要唯一,不能与其他重复
extends:继承的父package名称()这里默认写struts-default
namespace:定义package命名空间 该命名空间影响到url的地址,如果/test访问是的地址为http://x.x.x.x:8080/mystruts/test/XX.action
action要与jsp页面提交表单的name相对应,如页面提交的是abc.action这里对应的就是abc
class:对应的类的路径
method:不写默认调用类中的execute()方法
result name="success"当处理返回success跳转到show.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="test1" extends="struts-default">
<action name="show" class="com.mystruts.action.TestAction">
<result name="success">/show.jsp</result>
</action>
</package>
</struts>
index.jsp
这里调用了struts的标签库
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<s:form action="show.action">
<s:textfield name="str" label="输入内容:"/>
<s:submit value="提交" />
</s:form>
</body>
</html>
新建一个jsp显示结果
show.jsp
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'show.jsp' starting page</title>
</head>
<body>
${str}
</body>
</html>
部署以后测试结果:
简单的讲一下:
前面用户输入的数据通过表单提交show.action,服务器根据配置拦截了action,根据struts.xml的配置把对应的名字的请求调用对应的类来处理
上面就是把名字为show的action用TestAction处理,根据处理返回seuccess来跳转页面到show.jsp