乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      惡補(bǔ)J2EE Web 開發(fā)(講稿大綱)

       昵稱2807 2006-10-12
       惡補(bǔ)J2EE Web 開發(fā)(講稿大綱)

      這篇文章是給具備一些基本的j2ee開發(fā)的兄弟們看的 

      1 Webwork 2 作為MVC

      要讓服務(wù)器支持webwork,首先需要對web服務(wù)器的web.xml進(jìn)行配置,這里用/*,表示所有請求都作為webwork的action,也可以使用*.action, 這樣只有后綴名為action的才執(zhí)行。

      web.xml 
      <filter>
        <filter-name>webwork</filter-name>
        <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
      </filter>

      <filter-mapping>
        <filter-name>webwork</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>

      配置好上面以后,webwork就可以運(yùn)行了,我們添加兩個(gè)action試試

      xwork.xml

      <action name="employee" class="net.reumann.demo.webwork.employee.EmployeeAction">
        <result name="list">/WEB-INF/jsp/employee/employeeList.jspx</result>
        <result name="input">/WEB-INF/jsp/employee/employeeForm.jspx</result>
        <result name="success" type="redirect">employee.action</result>
      </action>

      這里添加了一個(gè)action叫做employee,也就是說,所有請求http://site/employee 訪問,都被看成觸發(fā)一個(gè)action.其具體內(nèi)容如下:

      這是一個(gè)最簡單的action,它起到了控制器的作用,實(shí)現(xiàn)了CRUD的基本功能,代碼非常簡介。幾乎和PHP,ROR差不多

      EmployeeAction.java

      public class EmployeeAction extends ActionSupport implements Preparable {


      public String execute() throws Exception {  //如果URL沒有指定Action,默認(rèn)調(diào)用它
        return list();  //轉(zhuǎn)到list
      }

      public String list() {
        return "list";
      }

      public String add() {
        employee = new Employee();
        return Action.INPUT;
      }
      public String edit() {
        employee = employeeDao.getEmployee(id);
        return Action.INPUT;
      }

      public String save() {
        if (nullOrZero(employee.getEmployeeId())) {
          employeeDao.insert(employee);
        } else {
          employeeDao.update(employee);
        }
          return Action.SUCCESS;
      }

      public String delete() {
        employeeDao.delete(id);
        return Action.SUCCESS;
      }

      public void prepare() {
        departmentList = departmentDao.getAllDepartments();  //用于selectbox中下拉菜單
        employeeList = employeeDao.getAllEmployees();
      }

      }

      webwork是基于MVC2的,因此上面的控制器對應(yīng)下面兩個(gè)模板文件。當(dāng)然實(shí)際應(yīng)用中不一定所有的界面都要采用MVC.

      employeeList.jspx

      <a href="employee!add.action">Add New Employee</a>

       

      employeeForm.jspx

      <w:if test="employee==null || employee.employeeId == null">
       <ww:set name="title" value="%{‘Add new employee‘}"/>
      </w:if>
      <w:else>
       <ww:set name="title" value="%{‘Update employee‘}"/>
      </w:else>


      <w:form action="employee!save.action" method="post">
          <w:textfield name="employee.firstName"
              value="%{employee.firstName}" label="%{getText(‘label.firstName‘)}" size="40"/>
          <w:textfield name="employee.lastName"
              value="%{employee.lastName}" label="%{getText(‘label.lastName‘)}" size="40"/>
          <w:textfield name="employee.age"
              value="%{employee.age}" label="%{getText(‘label.age‘)}" size="20"/>
          <w:select name="employee.department.departmentId"
              value="%{employee.department.departmentId}"
              list="departments" listKey="departmentId" listValue="name"/>
          <w:hidden name="employee.employeeId"
              value="%{employee.employeeId}"/>
          <w:submit name="action" value="%{getText(‘button.label.submit‘)}" cssClass="butStnd"/>
          <w:submit name="action" value="%{getText(‘button.label.cancel‘)}" cssClass="butStnd"/>
      </w:form>

      我們看到,這個(gè)表單非常簡單,由于其名字的規(guī)范定義。webwork的action響應(yīng)時(shí),會(huì)自己裝載其中的變量,和struts的formbean差不多。

      EmployeeAction-validation.xml

      <validators>
        <field name="employee.firstName">
           <field-validator type="requiredstring">
              <message key="errors.required.firstname"/>
            </field-validator>
        </field>
        <field name="employee.lastName">
           <field-validator type="requiredstring">
              <message key="errors.required.lastname"/>
            </field-validator>
        </field>
        <field name="employee.age">
           <field-validator type="required" short-circuit="true">
              <message key="errors.required.age"/>
            </field-validator>
            <field-validator type="int">
             <param name="min">18</param>
             <param name="max">65</param>
              <message key="errors.required.age.limit"/>
            </field-validator>
        </field>
      </validators>

      可以通過獨(dú)立的文件來定義字段驗(yàn)證

      EmployeeAction.properties
      errors.required.age.limit=Please provide an age between ${min} and ${max}.

      2 簡化訪問數(shù)據(jù)庫

      3 部分使用Spring連接系統(tǒng)原有資源,例如EJB

      要使webwork支持spring,只要簡單的下面的配置即可

      web.xml

      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/net/reumann/demo/spring.xml</param-value>
      </context-param>

      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>

      修改webwork的配置文件objectFactory=spring

      webwork.properties

      webwork.devMode=false
      webwork.objectFactory=spring

      然后定義好需要IoC的組件

      spring.xml

      <beans>
        <!-- DAO Configuration -->
        <bean id="employeeDao" class="net.reumann.demo.persistence.EmployeeNoDBdao" />
        <bean id="departmentDao" class="net.reumann.demo.persistence.DepartmentNoDBdao"/>
        <bean id="employeeAction" class="net.reumann.demo.webwork.employee.EmployeeAction">
          <constructor-arg ref="employeeDao" />
          <constructor-arg ref="departmentDao" />
        </bean>
      </beans>

      你就可以在action中自由的IoC了

      action

      public EmployeeAction(EmployeeDao employeeDao,
          DepartmentDao departmentDao) {
        this.employeeDao = employeeDao;
        this.departmentDao = departmentDao;
      }

       

      頁面結(jié)構(gòu)設(shè)計(jì)
      1 jsp include (部分使用taglib)
        <webwork:component template=”calendar.vm” label=”Birthdate”
         name=”birthday”>
          <webwork:param name=”showWeekends” value=”true”/>
        </webwork:component>
      2 sitemesh
      3 使用OA皮膚框架
      4 ajax + dojo

      業(yè)務(wù)層的設(shè)計(jì)
      1 action中直接調(diào)用JDBC SQL/Proc, 即action + jdbc

      2 action + service/session bean + dao + jdbc/ibatis/hibernate/entity bean (兩個(gè)接口,兩個(gè)實(shí)現(xiàn))
      public class DepartmentDaoService implements DepartmentService {
        DepartmentDao dao = new DepartmentDaoIbatisImpl();
      }

      3 沒有service層,只有action + dao + jdbc/ibatis/hibernate/entity bean ,(如上面的EmployeeAction)

      其它一些Struts的比較

      Struts不是一個(gè)框架,而是一組項(xiàng)目
      兩個(gè)框架:
        Action: Action model
        Shale: Component model
        Action 和 Shale 會(huì)盡可能多的共享代碼
      各種子項(xiàng)目,例如Tiles

      Struts 2將是Webwork 2.2和一些Struts的特性的結(jié)合

      Class (re)Loading
      1 Java 也可以像腳本語言那樣支持 edit-refresh 風(fēng)格的開發(fā)
      2 Janino, Eclipse compiler 以及一些其他的編譯器都使用 Commons-JCI is used
      3 所有的庫和框架都必須擺脫editcompile-package-deploy-wait-refresh的思想

      Webwork 允許動(dòng)態(tài)重新裝載xml配置文件 (例如, 自動(dòng)重新裝載 actions.xml).
      webwork.properties: webwork.configuration.xml.reload=true

      EclipseWork 是Eclipse的WebWork插件
      http://eclipsework./

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多