恶补J2EE Web 开发(讲稿大纲)

2008-02-23 09:13:26来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

这篇文章是给具备一些基本的J2EE开发的兄弟们看的

1 Webwork 2 作为MVC

要让服务器支持webwork,首先需要对web服务器的web.XML进行配置,这里用/*,表示所有请求都作为webwork的action,也可以使用*.action, 这样只有后缀名为action的才执行。

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就可以运行了,我们添加两个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>

这里添加了一个action叫做employee,也就是说,所有请求http://site/employee 访问,都被看成触发一个action.其具体内容如下:

这是一个最简单的action,它起到了控制器的作用,实现了CRUD的基本功能,代码非常简介。几乎和PHP,ROR差不多

EmployeeAction.Java

public class EmployeeAction extends ActionSupport implements Preparable {


public String execute() throws Exception { //如果URL没有指定Action,默认调用它
return list(); //转到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的,因此上面的控制器对应下面两个模板文件。当然实际应用中不一定所有的界面都要采用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>

我们看到,这个表单非常简单,由于其名字的规范定义。webwork的action响应时,会自己装载其中的变量,和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"/>

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Grails EJB Domain Models

下一篇:newxy新坐标06年9月28日升级至1.06版