【心态篇】金庸里里面很多的神功都是需要先废掉武功,其实编程道路都是如此,从struts1到struts2也是如此。当初一开始学的时候,打算互相对照法来学习,但是发现到观念开始不一样的时候,脑海里开始浮现“欲练此功必先自宫”,又是一条要切JJ才能学好的路,因此,开始转换心态当没学过MVC来学习了。

接下来就让小弟来分享“砍掉重练”的过程吧

【快速入门】

其实看到这里小弟很抱歉得说,其实前面的通通都没必要看,所以前面的种种只是告诉大家,小弟有多囧,所以从这里开始看就可以了

这里推荐大家用快速路线来入门、小弟采用的不是开发工具

单纯靠VI+ant

1.首要任务就是先建立必要的目录结构

1 WEB-INF/ 
2    build.xml
3    classes/ 
4       struts.xml
5    lib/ 
6    src/ 
7    web.xml

之所以要这样将src和build.xml放在一起,就是因为想在开发阶段只需要专注开发不用CARE部署问题

2.编辑build.xml

<project name="Struts2 Project" default="build">
   <path id="libraries">
      <fileset dir="lib" includes="*.jar"/>
   </path>
   <target name="build">
      <javac srcdir="src" destdir="classes" classpathref="libraries"/>
   </target> 
</project>

这么做只为一个“懒”字

因为这样一来,只要一ant一下就能看新过程了

3.把基本的jar包扔到lib目录下就OK了

解開 struts2-blank.war 這一包裡的 jar 扔進 WEB-INF/lib 就對了

4. 编辑web.xml
解開 struts2-blank.war 這一包裡的 web.xml 扔進 WEB-INF 就對了

5. 编辑 struts.xml
解開 struts2-blank.war 這一包裡的 struts.xml 扔進 WEB-INF/classes 就對了
不過這個檔之後要經常修改

到这里虽然什么鸟都沒生出來
但是基本环境的雏形就建立好了 

【生个蛋出来】

从这里开始就要让大家开始能看见网页了

在编程之前要介绍一下Struts2改革很大的一个地方

A. struts2的Action能够相容pojo讲白话一点就是什么鸟都不用继承的class就能当action用,反而struts1里所有的action都要继承什么来着,但是在struts2里是没是必要的

B. struts2里传值到view的过程中会把整个action当做bean丢到view去,而不一定要另外去生成个bean给view.也不用操作request.getAttribute() 和 request.setAttribute().

1.既然每次都要砍掉重新练hello word 一下,那就就再hello一下吧

請写下這些源代码扔到 WEB-INF/src/app/actions 目录去

package app.actions;
 
public class Hello {
 
   public String getMessage() {
      return "World!";
   }
 
   public String execute() {
      return "success";
   }
 
}

看到这里不用怀疑,这个没屁用的class还真能当action用

2. 修改 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>
 
    <constant name="struts.devMode" value="true"/>
 
    <package name="app" namespace="/" extends="struts-default">
        <action name="hello" class="app.actions.Hello">
            <result>hello.jsp</result>
        </action>
    </package>
 
</struts>

这里做个简短的说明:

首先假設环境是这样
伺服器在 localhost 上
port 是 8080
webapp 的名稱是 test

上述的 struts.xml 是說
/hello 这个名称对应到 app.actions.Hello 这个类別
而预设的結果要套在 hello.jsp 這個 View 上面
也就是说当使用者打了 http://localhost:8080/test/hello.action 这个网址
Struts2 框架會产生一个 app.actions.Hello 的物件
然后把这个物件当作 JavaBean 丟给 Hello.jsp 去排版

3.撰写 View 的 JSP 源代码:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
 
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
<title>Hello World</title>
</head>
 
<body>
Hello <s:property value="message"/>!!
</body>
 
</html>

 

当 Action 被丟来这里当 JavaBean 用的时候
先前的 getMessage() 方法就可以用 <s:property value="message"/> 取出來用
这样, Hello World 的程式就完成咯 ^^ 

 

 posted on 2012-05-20 22:30  蔡傑儒  阅读(389)  评论(1编辑  收藏  举报