Struts2 – Setup Project

มีน้องขอให้อัพเดทบทความของ Struts 2 เนื่องจากอันเดิมไม่สามารถทำตามโดยใช้เวอร์ชั่นใหม่ได้แล้ว ผมก็เลยจัดอัพเดทล่าสุดเป็นเวอร์ชั่น 2.3.20 GA ที่เพิ่งออกเมื่อวันที่ 7 ธันวาคม 2014 (ล่าสุด ณ วันที่เขียนบทความ)

เครื่องมือที่ใช้ยังคงเป็น Eclipse และ MySQL เช่นเคยนะครับ สำหรับน้องๆ ที่ใช้ Netbeans ก็ไม่ต้องเสียใจไป ค่อยๆ ทำความเข้าใจเอาว่าการวางไฟล์บน Eclipse เมื่อเทียบกับ Netbeans ในความหมายของตำแหน่งแล้วไม่ต่างกันเลย เอาไว้ถ้ามีคำขอให้ใช้ Netbeans เข้ามาเยอะๆ แล้วจะจัดให้นะครับ

Setup Struts 2 project


  1. ดาวโหลด Struts 2 จาก http://struts.apache.org/
  2. เปิด Eclipse แล้วสร้าง Dynamic Web Project เป็นแบบ Servlet 2.4 หรือ 2.5 (หรือ 3.0 ก็ได้แล้วค่อยเลือก generate web.xml เนื่องจาก Struts จำเป็นต้องใช้ไฟล์นี้)
  3. แตก zip ไฟล์ Struts 2 ที่โหลดมา แล้วเข้าไปที่โฟลเดอร์ apps จากนั้นแตก zip jar ที่ชื่อ struts2-blank.war
  4. เข้าไปในโฟลเดอร์ที่เพิ่งแตก zip เมื่อขั้นตอนที่แล้ว จากนั้นทำการ copy jar ใน WEB-INF/lib ไปไว้ในโปรเจคของเราดังภาพ Struts 2 Lib
  5. เข้าไปโฟลเดอร์ WEB-INF/classes ทำการ copy สองไฟล์ดังรูปไปไว้ที่ src (ย้ำว่าต้องเอามาไว้ที่ src นะครับ เพราะมีน้องที่ข้องใจว่าทำไมถึงไม่เอาไปไว้ใน WEB-INF คือมันต้องเอาไว้ที่ classpath เพราะฉะนั้นต้องเอาไว้ที่นี่นะครับ)Struts 2 Config
  6. เปิดไฟล์ WEB-INF/web.xml แล้วทำการ copy ข้อความดังรูปไปไว้ใน web.xml ของเราโดยทำการลบข้อความในกรอบแล้ววางที่ตำแหน่งนั้นได้เลย Struts 2 web.xml
  7. ที่โปรเจคใน Eclipse ให้สร้างโฟลเดอร์ WEB-INF/jsp จากนั้น copy ไฟล์ error.jsp จาก WEB-INF/jsp ที่แตก zip ไว้

จบขั้นตอนการเตรียมไฟล์แล้วครับ จากนี้คือส่วนที่เราต้องลงมือเองแล้ว

  1. สร้างไฟล์ jsp ชื่อ home.jsp ไว้ใน WEB-INF/jsp ดังนี้
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%@ 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=UTF-8">
    <title>Home</title>
    </head>
    <body>
        Hello, world!
    </body>
    </html>
    
  2. สร้างคลาสชื่อ HelloWorldAction ดังนี้
    package com.magicalcyber.hellostruts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class HelloWorldAction extends ActionSupport {
    	@Override
    	public String execute() throws Exception {
    		return SUCCESS;
    	}
    }
    
  3. เปิดไฟล์ struts.xml แล้วก็อปไปวางได้เลยครับ ผมแก้ไข action ชื่อ index ให้เรียกคลาสที่เพิ่งสร้างเมื่อขั้นตอนที่แล้ว และทำการเรียก home.jsp ที่เพิ่งสร้างเหมือนกัน จากนั้นลบ include example.xml ออก เนื่องจากไม่ได้ใช้งาน
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
    
        <constant name="struts.enable.DynamicMethodInvocation" value="false" />
        <constant name="struts.devMode" value="true" />
    
        <package name="default" namespace="/" extends="struts-default">
    
            <default-action-ref name="index" />
    
            <global-results>
                <result name="error">/WEB-INF/jsp/error.jsp</result>
            </global-results>
    
            <global-exception-mappings>
                <exception-mapping exception="java.lang.Exception" result="error"/>
            </global-exception-mappings>
    
            <action name="index" class="com.magicalcyber.hellostruts2.action.HelloWorldAction" method="execute">
                <result name="success">/WEB-INF/jsp/home.jsp</result>
            </action>
        </package>
    
        <!-- Add packages here -->
    
    </struts>
    
  4. คลิกขวาโปรเจค เลือก Run As -> Run on Server ควรจะขึ้นหน้าจอดังรูป Struts 2 Hello World

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s