廣告

2015年2月2日 星期一

[java][webservice] structs2 x eclipse x window8

前言1:java , tomcat設定 可以參考.前面幾篇
前言2:struts2 架構


Struts 2 Architecture


Struts2 的 Action 能夠相容 POJO
講白話一點就是什麼都不用繼承的 class 就能當 Action 用.
POJO類別簡單來說,就是單純的
Java類別,不帶有其他框架 API 呼叫,開發者可以以簡單不複雜的方式(不必實
作一些繁複的介面或繼承)來開發商業邏輯,減少與其他元件的耦合性.
action:Each URL is mapped to a specific action.

專案結構:





2. create dynamic web project






















3. put structs2 lib to your web-inf\lib














4. create model =>HelloWorldAction.java  
Struts 2 framework will create an object of HelloWorldAction.java,
and call execute method.

package com.tutorialspoint.struts2;

public class HelloWorldAction{
   private String name;
   private String age;

 public String getAge() {
  return age;
 }

 public void setAge(String age) {
  this.age = age;
 }

 public String execute() throws Exception {
  System.out.println(name+age);
  return "success2";
 }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}


5. create view    under webContent=>HelloWorld.jsp
<s:property value="name"/> 會呼叫 HelloWorldAction.java的getname()

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>Hello World
</head>
<body>
   Hello World,<s:property value="name">
   

   age ,<s:property value="age">
</body>
</html>

6.create main page   under webContent => index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
   
<html>
<head>
Hello World
</head>
<body>
   

Hello World From Struts2

Hello World From Struts2 Extend

Hello World From Struts2 Map

</body> </html>

action = hello . mapping to HelloWorldAction class , use struts.xml to setting





7.create struts.xml under src/


   
     
      
            /HelloWorld.jsp
      
      
       
            /HelloWorld.jsp
            /AccessDenied.jsp
         
        
            /HelloWorldMap.jsp
            /AccessDenied.jsp
         
      
   
   









The only requirement for actions in Struts2 is that there must be one no-argument method that returns either a String or Result object and must be a POJO. If the no-argument method is not specified, the default behavior is to use the execute() method.



8.create web.xml  under webContent/web-inf

   
   Struts 2
   
      index.jsp
   
   
      struts2
      
         org.apache.struts2.dispatcher.FilterDispatcher
      
   

   
      struts2
      /*
 
 
   





9.enable detail log (先跳過)





10. [test] run your project 












11. struts.properties file (if need, this will have default)

### When set to true, Struts will act much more friendly for developers
struts.devMode = true

### Enables reloading of internationalization files
struts.i18n.reload = true

### Enables reloading of XML configuration files
struts.configuration.xml.reload = true

### Sets the port that the server is run on
struts.url.http.port = 8080

      create under web-inf/classes




Create Multiple Actions


_1.  create HelloWorldActionExtendActionSupport.java

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldActionExtendActionSupport extends ActionSupport{
   private String name;

   public String execute() throws Exception {
      if ("SECRET".equals(name))
      {
         return SUCCESS;
      }else{
         return ERROR;  
      }
   }
   
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}


_2.  add content to struts.xml



   
     
      
            /HelloWorld.jsp
      
      
       
            /HelloWorld.jsp
            /AccessDenied.jsp
         
        
            /HelloWorldMap.jsp
            /AccessDenied.jsp
         
      
   
   













ValueStack/OGNL Example


The Object-Graph Navigation Language (OGNL) is a powerful expression language that is used to reference and manipulate data on the ValueStack. OGNL also helps in data transfer and type conversion.


=1.  create HelloWorldActionExtendActionMap.java

package com.tutorialspoint.struts2;

import java.util.*; 

import com.opensymphony.xwork2.util.ValueStack;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldActionMap extends ActionSupport{
   private String name;

   public String execute() throws Exception {
      ValueStack stack = ActionContext.getContext().getValueStack();
      Map context = new HashMap();

      context.put("key1", this.name); 
      context.put("key2", this.name);
      stack.push(context);

      System.out.println("Size of the valueStack: " + stack.size());
      return "success";
   }  

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

=2. add content to struts.xml(同上)
=3. add HolloWorldMap.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
Hello World
</head>
<body>
   Entered value : <s:property value="name">

   Value of key 1 : <s:property value="key1">

   Value of key 2 : <s:property value="key2"> 


</body>
</html>








1 則留言:

  1. eclipse import step
    .import project with dynamic web project
    .set: Properties -> project facets -> runtimes -> click your tomcat

    回覆刪除