struts2.0(1-10)

Stuts2.0總結

 

向先函 2009-11-25

PLSQLDev –Oracle10開發工具

[1]

一、配置tomcat自動重載

 

C:/Documents and Settings/Administrator/桌面/apache-tomcat-6.0.18/apache-tomcat-6.0.18/conf/server.xml

 

配置如下:

              <!--docBase 是工程屬性的location + WebRoot-->

             

              <context path="struts2" docBase ="C:/Documents and Settings/Administrator/workspace/struts2.0/WebRoot" raloadable = "true"/>

 

      </Host>

    </Engine>

  </Service>

</Server>

tomcat加到MyEclipse就完成了。

 

基本的登錄實現

 

2要加的初步jar包有: 在官方的struts2.0-all包下:

Common-io-1.3.2.jar

Common-logging-1.0.4.jar

Common-fileupload-1.2.1.jar

Freemarker-2.3.15.jar

Ognl-2.7.3.jar

Struts2-core-2.1.8.1.jar

Xwork-core-2.1.6.jar

 

 

1 web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

    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_2_5.xsd">

  <filter>

       <filter-name>struts2</filter-name>

       <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

    </filter>

    <filter-mapping>

       <filter-name>struts2</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

</web-app>

 

 

2 login.jsp

 

<html>

    <head>

       <title>login.jsp</title>

    </head>

 

    <body>

       <br>

       <form method="post" action="login.action">

           username:

           <input name="username" type="text">

           <br>

           password:

           <input name="password" type="text">

           <br>

           <input type="submit" name="Submit" value="        ">

       </form>

 

    </body>

</html>

 

3 struts.xml

<?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">

   

 <!--<action name="login"name是表單的login.aciton的前面

     result excuse 返回的頁面,默認success -->

<struts>

    <package name="struts2" extends="struts-default">

       <action name="login" class="com.test.action.LoginAction">     

           <result>/success.jsp</result>

       </action>

    </package>

</struts>

 

4 LoginAction

 package com.test.action;

 

public class LoginAction {

   

    private String username;

    private String password;

   

    GET Set 的複寫

 

    //最後執行的方法

    public String execute() throws Exception

    {

       return "success";

    }

 

}

 

5 success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>success.jsp</title>

</head>

<body>

username:${requestScope.username}<br>

password:${requestScope.password }<br>

username:<%=request.getParameter("username") %><br>

password:<%=request.getParameter("password") %><br>

</body>

</html>

 

 

標籤的使用:

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%@ taglib prefix = "s" uri = "/struts-tags" %>

<html>

    <head>

       <title>login2.jsp</title>

    </head>

    <body>

    <s:form action = "login">

    <s:textfield name ="username" label = "username"/>

    <s:password name = "password" label ="password" />

    <s:submit label = "submit" value="提交"></s:submit>

    </s:form>

    </body>

</html>

 

驗證:

 

package com.test.action;

 

import com.opensymphony.xwork2.ActionSupport;

 

public class LoginAction extends ActionSupport {

   

    private String username;

    private String password;

   

    GET Set 的複寫

 

    //最後執行的方法一般調用業務組件

    public String execute() throws Exception

    {

       if("hello".equals(this.getUsername())&&"world".equals(this.getPassword()))

       {

           return "success";

       }else

       {

           this.addFieldError("username", "username or password error");

           return "failer";

       }   

      

    }

   

    @Override

    public void validate() {

      

       if(null == this.getUsername()||"".equals(this.getUsername().trim()))

       {

           this.addFieldError("username", "username required");

       }

       if(null==this.getPassword()||"".equals(this.getPassword().trim()))

       {

           this.addFieldError("password", "password required");

       }

    }

}

 

Struts.xml

 

<?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">

   

 <!--<action name="login"name是表單的login.aciton的前面

     result excuse 返回的頁面,默認success

     輸入框的input 是固定的-->

<struts>

    <package name="struts2" extends="struts-default">

       <action name="login" class="com.test.action.LoginAction">

           <result name="input">/login2.jsp</result>

           <result name="failer">/login2.jsp</result>   

           <result>/success.jsp</result>

       </action>

    </package>

</struts>

 

 

Struts類型轉換

Ognl 是一種表達式語言

 

input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%@ taglib prefix = "s" uri = "/struts-tags" %>

<html>

    <head>

       <title>input.jsp</title>

    </head>

    <body>

    <h3>使用逗號將點的兩個座標分割開</h3>

    <s:form action = "pointConverter">

    <s:textfield name ="point" label = "point"/>

    <s:password name = "age" label ="age" />

    <s:password name = "username" label ="username" />

    <s:password name = "date" label ="birthday" />

    <s:submit label = "submit" value="提交"></s:submit>

    </s:form>

    </body[G1] >

</html>

 

 

Webwork的官網,xwork或其他源碼都在裏面

http://www.opensymphony.com/

 

struts.xml:

 

<?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">

   

 <!--<action name="login"name是表單的login.aciton的前面

     result excuse 返回的頁面,默認success

     輸入框的input 是固定的-->

<struts>

    <package name="struts2" extends="struts-default">

       <action name="login" class="com.test.action.LoginAction">

           <result name="input">/login2.jsp</result>

           <result name="failer">/login2.jsp</result>   

           <result>/success.jsp</result>

       </action>

       <action name="pointConverter" class="com.test.action.PointAction">   

           <result name = "success">/output.jsp</result>

       </action>

    </package>

</struts>

 

 

PointAction.java

 

package com.test.action;

 

import java.util.Date;

 

import com.opensymphony.xwork2.ActionSupport;

import com.test.bean.Point;

 

public class PointAction extends ActionSupport {

   

    private Point point;

    private int age;

    private String username;

    private Date date;

 

    GET Set 的複寫

 

    @Override//使用關鍵字返回

    public String execute() throws Exception {

      

       return SUCCESS;

    }

 

}

PointAction-conversion.properties//一定和使用的Action在同一個目錄下

 

point=com.test.converter.PointConverter

 

convertValue轉化類

 

package com.test.converter;

 

import java.util.Map;

 

import com.test.bean.Point;

 

import ognl.DefaultTypeConverter;

 

public class PointConverter extends DefaultTypeConverter {

 

    @Override

    public Object convertValue(Map context, Object value, Class toType) {

       // 客戶端到服務器的轉換

       if (Point.class == toType) {

           Point point = new Point();

           String[] str = (String[]) value;

           String[] paramValues = str[0].split(",");

 

           int x = Integer.parseInt(paramValues[0]);

           int y = Integer.parseInt(paramValues[1]);

 

           point.setX(x);

           point.setY(y);

 

           return point;

       }

       // 服務器到客戶端的轉換如果不轉換將執行裏邊的tostring方法

       if (String.class == toType) {

 

           Point point = (Point) value;

           int x = point.getX();

           int y = point.getY();

 

           String result = "[x=" + x + ", y=" + y + "]";

 

           return result;

       }

       return null;

    }

 

}

 

 

 

Point

 

package com.test.bean;

 

public class Point {

        

    private int x;

    private int y;

   

GET Set 的複寫

 

}

 

output.jsp

<%@ page language="java" contentType="text/html; charset=gbk"

    pageEncoding="gbk"%>

<%@ taglib prefix = "s" uri = "/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gbk">

<title>output.jsp</title>

</head>

<body>

  point:<s:property value = "point"/><br>

  age:<s:property value = "age"/><br>

  username:<s:property value = "username"/><br>

  date:<s:property value = "date"/><br>

 

</body>

</html>

 

 

總結:流程input.jsp struts.xml: PointAction.java PointAction-conversion.properties convertValue轉化類》 Point PointAction.java struts.xml: output.jsp:》PointAction.java convertValue轉化類》PointAction.java output.jsp

 

 

 

Struts類型高級轉換

集合類型

 

輸入頁面

<h3>使用逗號將點的兩個座標分割開</h3>

    <s:form action = "pointConverter">

    <s:textfield name ="point" label = "point"/>

    <s:textfield name ="point2" label = "point2"/>

    <s:textfield name ="point3" label = "point3"/>

 

 

PointAction

 

private Point point;

private Point point2;

private Point point3;

 

PointAction-conversion.properties

 

point=com.test.converter.PointConverter

point2=com.test.converter.PointConverter

point3=com.test.converter.PointConverter

 

輸出頁面

 

point:<s:property value = "point"/><br>

point2:<s:property value = "point2"/><br>

point3:<s:property value = "point3"/><br>

 

 

全局類型轉換:需要在SRC下建立如下文件和如下配置

 

xwork-conversion.properties

 

//所有的Point類都通過converter.PointConverter來轉化

 

com.test.bean.Point=com.test.converter.PointConverter

 

 

StrutsTypeConverter類型轉換

 

PointConverter2.Java

 

package com.test.converter;

 

import java.util.Map;

 

import org.apache.struts2.util.StrutsTypeConverter;

 

import com.test.bean.Point;

 

public class PointConverter2 extends StrutsTypeConverter {



[1]


 [G1]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章