struts2小程序
原创
©著作权归作者所有:来自51CTO博客作者wx636dc453ed367的原创作品,请联系作者获取转载授权,否则将追究法律责任
struts2是一个实现了MVC设计模式的web框架,简化我们为web应用开发,值得一提的是之前有一个struts1,它俩存在很大的差别,基本可以认为是两个不同的框架,接口,实现方面都大不相同。下面介绍下struts2的环境搭建。
1.下载
在http://struts.apache.org下载struts-2.3.20-all.zip,解压。
2.新建项目
打来Eclipse,新建一个dynamic web project项目,命名为add。
3.导入开发包
进入struts-2.3.20\apps,解压struts2-blank.zip,进入找到WEB-INF,打开后进入lib文件夹,里面有很多.jar文件,这就是我们要使用的核心的struts2的开发包。全部复制,粘贴到项目中的webcontent/web-inf/lib下面。这里的struts-2.3.20\apps实际上是很多官方提供的struts2实例,我们可以参考并使用。
4.创建web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>
</web-app>
其中的filter是核心,struts2使用的是filter来转发请求。
5.struts。xml
该文件放到src文件夹下,主要配置如何转发请求。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="struts2"
extends="struts-default">
<action name="sum" class="com.nju.FirstAction" >
<result name="positive">/positive.jsp</result>
<result name="negative">/negative.jsp</result>
</action>
</package>
</struts>
action:指使用Action类对一次请求的处理。只要来了一个请求,就会新建一个Action类的实例,执行Action的处理方法,返回结果页面。一个Action类可以出俩多个请求,配置 action条目即可。
name:表明了这种处理的名字,在表单中会用到,指定这个表单请求由哪个action来处理;
class:指定了实现类是哪个,用的是全类名。
result:指定了action处理完请求之后,会呈现什么页面,这里可以动态选择,当然要根据action实现类来定,action当中有一个execute方法,会返回一个string,与哪个result name匹配就返回后面的页面。这样做的话有一个好处就是,页面使用的是逻辑名,程序中使用这个逻辑名,不用改变了,具体名与逻辑名的匹配写在struts。xml中。
6.创建action文件
它计算两个数的和。
package com.nju;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class FirstAction extends ActionSupport {
private int operand1;
private int operand2;
public String execute() throws Exception {
if (getSum() >= 0) // 如果代码数和是非负整数,跳到positive.jsp页面
{
return "positive";
}
else // 如果代码数和是负整数,跳到negative.jsp页面
{
return "negative";
}
}
public int getOperand1() {
return operand1;
}
public void setOperand1(int operand1) {
System.out.println(operand1);
this.operand1 = operand1;
}
public int getOperand2() {
return operand2;
}
public void setOperand2(int operand2) {
System.out.println(operand2);
this.operand2 = operand2;
}
public int getSum() {
return operand1 + operand2; // 计算两个整数的代码数和
}
}
struts2规定,任何一个类只要是有
public String XXX(){
}这个方法就可以是一个Action,当然我们也可以继承ActionSupport类,这样可以使用父类的东西。
struts2根据execute返回的字符串与result匹配,决定返回什么页面。
7.创建页面
sum.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>输入操作数</title>
</head>
<body>
求代数和
<br/>
<s:form action="/add/sum">
<s:textfield name="operand1" label=" 操作数1"/>
<s:textfield name="operand2" label=" 操作数2" />
<s:submit value="代数和" />
</s:form>
</body>
</html>
positive.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>显示代数和</title>
</head>
<body>
代数和为非负整数<h1><s:property value="sum" /></h1>
</body>
</html>
negative.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>显示代数和</title>
</head>
<body>
代数和为负整数<h1><s:property value="sum" /></h1>
</body>
</html>
8.项目目录: