新建一个web项目,为其添加struts1.1特性,然后新建一个产生数字的acionform
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package ch02;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts
* Creation date: 06-25-2010
*
* XDoclet definition:
* @struts.form name="ch02.form.GuessNumberFormForm"
*/
public class CreateNumberActionForm extends ActionForm {
private String digits;
public String getDigits() {
return digits;
}
public void setDigits(String digits) {
this.digits = digits;
}
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
}
新建一个生成数字的action类,代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package ch02;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import ch02.CreateNumberActionForm;
/**
* MyEclipse Struts Creation date: 06-25-2010
*
* XDoclet definition:
*
* @struts.action
*/
public class createNumberAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
CreateNumberActionForm cform = (CreateNumberActionForm) form;
HttpSession session = request.getSession();
session.removeAttribute("message");
int digits = Integer.parseInt(cform.getDigits());
int secret_number = (int) (Math.random() * digits);
System.out.println(secret_number);
session.setAttribute("secret_number", String.valueOf(secret_number));
return mapping.findForward("guess"); //全局转发或是action forward
}
}
再建一个接收所猜数字的acitionform
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package ch02;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts
* Creation date: 06-25-2010
*
* XDoclet definition:
* @struts.form name="ch02.form.JudgeActionForm"
*/
public class JudgeActionForm extends ActionForm {
/*
* Generated fields
*/
/** guess_number property */
private String guess_number;
/*
* Generated Methods
*/
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
/**
* Returns the guess_number.
* @return String
*/
public String getGuess_number() {
return guess_number;
}
/**
* Set the guess_number.
* @param guess_number The guess_number to set
*/
public void setGuess_number(String guess_number) {
this.guess_number = guess_number;
}
}
判断所猜数字的action
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package ch02;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import ch02.JudgeActionForm;
/**
* MyEclipse Struts
* Creation date: 06-25-2010
*
* XDoclet definition:
* @struts.action
*/
public class judgeAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
JudgeActionForm jForm = (JudgeActionForm) form;
HttpSession session = request.getSession();
int guess_number = Integer.parseInt(jForm.getGuess_number());
int secret_number = Integer.parseInt((String)session.getAttribute("secret_number"));
if (guess_number == secret_number){
session.setAttribute("message","equal");
}else if (guess_number > secret_number){
session.setAttribute("message","bigger");
}else{
session.setAttribute("message","smaller");
}
return mapping.findForward("guess"); //继续返回猜数字
}
}
这些在myeclipse里都有图形化生成工具,填入对应的名称即可生成代码类,在写入所需的逻辑代码。这样系统会自动在struts-config.xml中配置对应的action和actionform,无需自己编写配置文件
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="createNumberActionForm" type="ch02.CreateNumberActionForm" />
<form-bean name="judgeActionForm" type="ch02.JudgeActionForm" />
</form-beans>
<global-exceptions />
<global-forwards>
<forward name="guess" path="/guess.jsp"></forward>
</global-forwards>
<action-mappings >
<action
name="createNumberActionForm"
path="/createNumberAction"
scope="session"
type="ch02.createNumberAction"
validate="false" />
<action
name="judgeActionForm"
path="/judgeAction"
scope="session"
type="ch02.judgeAction"
validate="false" />
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
web。xml主要配置servlet,
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 中心控制器ActionServlet -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<!-- 中心控制器ActionServlet -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>guess.jsp</welcome-file>
</welcome-file-list>
</web-app>
唯一的一个jsp页面guess.jsp代码如下:主要用到struts的标签库
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ page contentType="text/html; charset=GB2312" %>
<html:html>
<head>
<title>
guess.jsp
</title>
</head>
<body>
<h1><bean:message key="page"/></h1>
<html:form action="/createNumberAction.do" method="POST">
<h3><bean:message key="page.choose"/></h3>
<html:select property="digits">
<html:option value="10">10</html:option>
<html:option value="100">100</html:option>
<html:option value="1000">1000</html:option>
</html:select>
<html:submit><bean:message key="page.new"/></html:submit><br>
</html:form>
<hr>
<html:form action="/judgeAction.do" method="POST">
<html:text property="guess_number" value=""/>
<html:submit><bean:message key="page.guess"/></html:submit><br>
</html:form>
<hr>
<%
String message = null;
message = (String)session.getAttribute("message");
if (message != null) {
if (message.equals("equal")){
%>
<!-- result.equal在资源文件中定义 -->
<h1><bean:message key="result.equal"/></h1>
<%
}
else if (message.equals("bigger")){
%>
<h1><bean:message key="result.big"/></h1>
<%
}
else {
%>
<h1><bean:message key="result.small"/></h1>
<%
}
}
%>
</body>
</html:html>
资源文件 ApplicationResources.properties
result.equal = \u606d\u559c\u4f60\uff0c\u7b54\u5bf9\u4e86\uff01
result.small = \u592a\u5c0f\u4e86\uff0c\u91cd\u65b0\u731c\u5427\uff01
result.big = \u592a\u5927\u4e86\uff0c\u91cd\u65b0\u731c\u5427\uff01
page = \u731c\u6570\u5b57\u7684\u9875\u9762
page.choose = \u9009\u62e9\u6570\u5b57\u7684\u8303\u56f4
page.new = \u5f00\u59cb\u4e00\u6b21\u65b0\u7684\u731c\u6570
page.guess = \u731c\u731c\u770b
部署到tomcat上,或直接拷贝项目至webapps启动tomcat,输入网址http://localhost:8080/项目名称,即可访问