intelliJ IDEA 7.0 으로 첫 번 째 Struts 2 CRUD 애플 리 케 이 션 만 들 기

(1) struts 공식 사이트 에 struts - 2.0.11.1 - all. zip. URL 을 다운로드 합 니 다.http://struts.apache.org/download.cgi#struts20111
(2) intelliJ IDEA 새 빈 웹 애플 리 케 이 션 열기
오른쪽 키 프로젝트 에 struts 2 의 jar 패키지 추가:
commons-logging-1.0.4.jar,
freemarker-2.3.8.jar,
ognl-2.6.11.jar,
struts2-core-2.0.11.1.jar,
xwork-2.0.4.jar
(3) 모든 것 이 준비 되 어 인 코딩 을 시작 합 니 다.
먼저 웹. xml 를 설정 합 니 다. 코드 는 다음 과 같 습 니 다.
  
<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>

(4) 프로젝트 의 src 에 struts. xml, struts. properties 를 새로 만 듭 니 다. 이 두 파일 은 각각 struts 2 - core - 2.0.11.1. jar 의 struts - default. xml 와 default. properties 에 대응 합 니 다. 물론 struts 2 - core - 2.0.11.1. jar 에서 이 두 파일 을 복사 하고 적당 한 수정 을 할 수 있 습 니 다.struts. properties 여 기 는 아무런 수정 도 하지 않 습 니 다.
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">

<struts>
   <include file="struts-default.xml"/>
    <package name="default" extends="struts-default" namespace="/user">
       <action name="List" class="user.actions.UserAction" method="listUser">
          <result name="success">/user/listUser.jsp</result>
       </action>
       <action name="Edit" class="user.actions.UserAction" method="simpleUser">
          <result name="success">/user/editUser.jsp</result>
       </action>
        <action name="Delete" class="user.actions.UserAction" method="removeUser">
             <result name="success" type="redirect">List.action</result>
        </action>
        <action name="Store" class="user.actions.UserAction" method="storeUser">
             <result name="success" type="redirect">List.action</result>
        </action>
    </package>
</struts>

(5) 새 액 션 코드 는 다음 과 같 습 니 다.

package user.actions;

import com.opensymphony.xwork2.ActionSupport;

import java.util.Collection;

import user.model.User;
import user.dao.UserDao;

public class UserAction extends ActionSupport {
    private String userID;
    private String[] userIDs;
    private User user;
    private Collection<User> users;
    
    private UserDao userDao = UserDao.getInstance();
    
    public UserAction(){}

    public String execute() throws Exception {
        return super.execute();
    }

    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    public String[] getUserIDs() {
        return userIDs;
    }

    public void setUserIDs(String[] userIDs) {
        this.userIDs = userIDs;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Collection<User> getUsers() {
        return users;
    }

    public void setUsers(Collection<User> users) {
        this.users = users;
    }

    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    //==============================
    //all users
    public String listUser(){
        users = userDao.getUsers();
        return SUCCESS;
    }
    //simple user
    public String simpleUser(){
        user = userDao.getUser(userID);
        return SUCCESS;
    }
    //store user
    public String storeUser(){
        userDao.storeUser(user);
        return SUCCESS;
    }
   //delete users
    public String removeUser(){
        if(userID != null)
           userDao.deleteUser(userID);
        else
           userDao.removeUsers(userIDs);
        return SUCCESS;
    }
}

(6) Dao 는 데이터 베 이 스 를 연결 하지 않 고 Concurrent HashMap 을 데이터 소스 로 합 니 다.

package user.dao;

import user.model.User;

import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Collection;

/**
 * Created by IntelliJ IDEA.
 * User: ibm
 * Date: 2008-5-27
 * Time: 14:23:17
 * To change this template use File | Settings | File Templates.
 */
public class UserDao {

    private static ConcurrentMap<String, User> dataMap;
    private static UserDao userDao = new UserDao();
    
    static{
        dataMap = new ConcurrentHashMap<String,User>();
        dataMap.put("1000",new User("1000","jim","123","beijing"));
        dataMap.put("1001",new User("1001","steven","234","shanghai"));
        dataMap.put("1002",new User("1002","oscar","123","shanghai"));
    }
    
    public UserDao(){}

    public static UserDao getInstance(){
        return userDao;
    }
    public User getUser(String userID){
        return dataMap.get(userID);
    }
    public Collection<User> getUsers(){
        return dataMap.values();
    }
    public void removeUsers(String[] userid){
         for(String uid:userid){
             dataMap.remove(uid);
         }
    }
    public void deleteUser(String userID){
          dataMap.remove(userID);
    }
    public void storeUser(User user){
        dataMap.put(user.getUserID(),user);
    }
}

(7), 모델 데이터 Bean

package user.model;

/**
 * Created by IntelliJ IDEA.
 * User: ibm
 * Date: 2008-5-27
 * Time: 14:02:23
 * To change this template use File | Settings | File Templates.
 */
public class User {
    private String userID;
    private String userName;
    private String passWord;
    private String address;

    public User(){}
    public User(String userID,String userName,String passWord,String address){
        this.userID = userID;
        this.passWord = passWord;
        this.userName = userName;
        this.address = address;
    }
    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

(8), 페이지 표시 listUser. jsp

<s:form id="formSubmit" action="Delete" theme="simple">
  <s:iterator value="users">
    <tr>
      <td>
      <input type="checkbox" name="userIDs" value="<s:property    value='userID'/>"/>
      </td>
      <td><s:property value="userID"/></td>
      <td><s:property value="userName"/></td>
      <td><s:property value="passWord"/></td>
      <td><s:property value="address"/></td>
      <td>
      <s:url id="edit" action="Edit" namespace="/user"><s:param   name="userID" value="userID"/></s:url><a href="${edit}">EDIT</a>
      </td>
      <td>
       <s:url id="delete" action="Delete" namespace="/user">
          <s:param name="userID" value="userID"/></s:url><a href="${delete}">DELETE</a>
       </td>            
     </tr>
 </s:iterator>
<s:a href="javaScript:sunmit();">Delete!</s:a>
<s:a href="editUser.jsp">Add user!</s:a>
</s:form>

(9) 페이지 editUser. jsp 추가 편집

     <s:if test="null == user">
          ADD USER!
      </s:if>
      <s:else>
          EDIT USER!
      </s:else>
      <s:form action="Store" name="/user">
          <s:textfield name="user.userID" label="USERID:"/>
          <s:textfield name="user.userName" label="USERNAME:"/>
          <s:textfield name="user.passWord" label="PASSWORD:"/>
          <s:textfield name="user.address" label="ADDRESS:"/>
          <s:submit value="submit"/>
      </s:form>

간단 한 입문 struts 2 애플 리 케 이 션 이 완성 되 었 습 니 다.간단 하기 때문에 struts 2 의 인증 프레임 워 크 를 추가 하지 않 았 습 니 다.

좋은 웹페이지 즐겨찾기