第一步:(这一步和其他一样,这里从简)
依旧是新建一个web project,命名为struts2,导入struts2必须的包。在src目录下新建struts.xml,修改web.xml文件。
第二步:
将index.jsp改名为input.jsp(这个不是必须的,事实上也没有必要,此处只是为了便于称呼)。Input.jap的代码如下
- <%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
- <%
- Stringpath=request.getContextPath();
- StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@taglibprefix="s"uri="/struts-tags"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <basehref="<%=basePath%>">
- <title>MyJSP'index.jsp'startingpage</title>
- <metahttp-equiv="pragma"content="no-cache">
- <metahttp-equiv="cache-control"content="no-cache">
- <metahttp-equiv="expires"content="0">
- <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
- <metahttp-equiv="description"content="Thisismypage">
- <!--
- <linkrel="stylesheet"type="text/css"href="styles.css">
- -->
- </head>
- <body>
- <h1><fontcolor='red'>请输入坐标,用英文半角逗号隔开</font></h1>
- <s:formaction="pointconverter">
- <s:textfieldname="point1"label="point1"></s:textfield>
- <s:textfieldname="point2"label="point2"></s:textfield>
- <s:textfieldname="point3"label="point3"></s:textfield>
- <s:submitname="submit"></s:submit>
- </s:form>
- </body>
- </html>
该文件有两个要注意的地方
1.使用了struts2的标签库 <%@ taglib prefix="s" uri="/struts-tags" %>
2.f注意form中的action属性
第三步:
在src下新建包com.beam,其中定义point类 point.java 代码如下:
- packagecom.bean;
- publicclassPoint{
- publicintgetX(){
- returnx;
- }
- publicvoidsetX(intx){
- this.x=x;
- }
- publicintgetY(){
- returny;
- }
- publicvoidsetY(inty){
- this.y=y;
- }
- privateintx;
- privateinty;
- }
Action
在src下新建包com.action
其中新建类PointAction.java 代码如下
- packagecom.action;
- importcom.opensymphony.xwork2.ActionSupport;
- importcom.bean.Point;
- publicclassPointActionextendsActionSupport
- {
- publicPointgetPoint1(){
- returnpoint1;
- }
- publicvoidsetPoint1(Pointpoint1){
- this.point1=point1;
- }
- publicPointgetPoint2(){
- returnpoint2;
- }
- publicvoidsetPoint2(Pointpoint2){
- this.point2=point2;
- }
- publicPointgetPoint3(){
- returnpoint3;
- }
- publicvoidsetPoint3(Pointpoint3){
- this.point3=point3;
- }
- publicStringexecute()throwsException
- {
- returnSUCCESS;
- }
- privatePointpoint1;
- privatePointpoint2;
- privatePointpoint3;
- }
第五步:配置struts.xml文件 代码如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <!DOCTYPEstrutsPUBLIC
- "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
- "struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <packagename="struts2"extends="struts-default">
- <actionname="pointconverter"class="com.action.PointAction">
- <resultname="success">/output.jsp</result>
- <resultname="input">/input.jsp</result>
- </action>
- </package>
- </struts>
第六步:
在WebRoot下新建视图output.jsp 依旧运用struts2的标签库 代码如下
- <%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
- <%
- Stringpath=request.getContextPath();
- StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@taglibprefix="s"uri="/struts-tags"%>
- <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <basehref="<%=basePath%>">
- <title>MyJSP'output.jsp'startingpage</title>
- <metahttp-equiv="pragma"content="no-cache">
- <metahttp-equiv="cache-control"content="no-cache">
- <metahttp-equiv="expires"content="0">
- <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
- <metahttp-equiv="description"content="Thisismypage">
- <!--
- <linkrel="stylesheet"type="text/css"href="styles.css">
- -->
- </head>
- <body>
- point1:<s:propertyvalue="point1"/><br>
- point2:<s:propertyvalue="point2"/><br>
- point3<s:propertyvalue="point3"/>
- </body>
- </html>
第七步:类型转化器
在src目录下新建com.converter包 其中新建类PointConverter.java 代码如下
- packagecom.converter;
- importjava.util.Map;
- importorg.apache.struts2.util.StrutsTypeConverter;
- importcom.bean.Point;
- publicclassPointConverterextendsStrutsTypeConverter{
- @Override
- publicObjectconvertFromString(Maparg0,String[]arg1,Classarg2){
- Pointpoint=newPoint();
- String[]values=arg1[0].split(",");
- intx=Integer.parseInt(values[0].trim());
- inty=Integer.parseInt(values[1].trim());
- point.setX(x);
- point.setY(y);
- returnpoint;
- }
- @Override
- publicStringconvertToString(Maparg0,Objectarg1){
- Pointpoint=(Point)arg1;
- intx=point.getX();
- inty=point.getY();
- Stringresult="<x="+x+",y="+y+">";
- returnresult;
- }
- }
第八步:
使类型转化器和action中的对应point属性关联起来新建一个properties文件
这里有两种方法:
第一种是在com.converter包中新建一个PointAction-conversion.properties文件
代码如下:
- point1=com.converter.PointConverter
- point2=com.converter.PointConverter
- point3=com.converter.PointConverter
第二种:是在src目录下直接新建一个文件 xwork-conversion.properties
代码如下
- com.bean.Point=com.converter.PointConverter