`
webcode
  • 浏览: 6074115 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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

阅读更多

这篇文章是给具备一些基本的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"/>
</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>

可以通过独立的文件来定义字段验证

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

2 简化访问数据库

3 部分使用Spring连接系统原有资源,例如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;
}

页面结构设计
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

业务层的设计
1 action中直接调用JDBC SQL/Proc, 即action + jdbc

2 action + service/session bean + dao + jdbc/ibatis/hibernate/entity bean (两个接口,两个实现)
public class DepartmentDaoService implements DepartmentService {
DepartmentDao dao = new DepartmentDaoIbatisImpl();
}

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

其它一些Struts的比较

Struts不是一个框架,而是一组项目
两个框架:
Action: Action model
Shale: Component model
Action 和 Shale 会尽可能多的共享代码
各种子项目,例如Tiles

Struts 2将是Webwork 2.2和一些Struts的特性的结合

Class (re)Loading
1 Java 也可以像脚本语言那样支持 edit-refresh 风格的开发
2 Janino, Eclipse compiler 以及一些其他的编译器都使用 Commons-JCI is used
3 所有的库和框架都必须摆脱editcompile-package-deploy-wait-refresh的思想

Webwork 允许动态重新装载xml配置文件 (例如, 自动重新装载 actions.xml).
webwork.properties: webwork.configuration.xml.reload=true

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

分享到:
评论

相关推荐

    开发J2EE Web应用

    在IT领域,特别是软件开发行业中,Java 2 Platform, Enterprise Edition(简称J2EE)是一个极为重要的技术框架,专门用于构建可扩展、健壮的企业级Web应用。《Designing Enterprise Applications with the Java 2 ...

    J2EE Web开发技术期待一次新的技术变革

    J2EE Web开发技术在过去的几年里,尽管在企业级应用中扮演了重要角色,但其核心技术栈,如Servlet、JSP和Struts,已经逐渐显现出局限性,无法满足现代开发需求。这些技术的问题主要体现在以下几个方面: 首先,...

    strut2+mybatis+mysql J2EE WEB开发项目 万达影城

    strut2+mybatis J2EE WEB开发项目 万达影城;strut2+mybatis J2EE WEB开发项目 万达影城;strut2+mybatis J2EE WEB开发项目 万达影城;采用mysql数据库

    基于tomcat的j2EE WEB开发

    这个主题“基于Tomcat的J2EE WEB开发”主要涵盖了如何使用Tomcat服务器来开发和部署J2EE Web应用程序。 **1. J2EE基础** J2EE是Java平台的企业版,用于开发和部署多层、分布式的、面向服务的(SOA)应用程序。它...

    J2EE Web Service

    值得注意的是,虽然本书假定读者将开发符合WS-I标准的Web服务,但只有J2EE 1.4供应商被强制要求支持BP。这并不意味着必须遵循BP;实际上,J2EE 1.4 Web服务API也必须支持不遵循BP的技术,例如带有附件的SOAP消息和...

    J2EE WEB开发指南

    ### J2EE WEB开发指南知识点概述 #### 一、分布式多层应用 - **概念**:J2EE(Java 2 Platform, Enterprise Edition)是一种基于Java的平台,用于开发和部署企业级应用。分布式多层应用是指应用由多个逻辑层组成,...

    J2ee企业级开发考试大纲

    J2EE企业级开发考试大纲详细涵盖了J2EE开发中的关键技术和知识点,旨在测试学生对这一领域的理解和应用能力。以下是大纲中涉及的主要内容: 1. **Struts框架技术**:Struts是Java Web开发中常用的MVC框架。考生需要...

    J2EE 应用于开发复习大纲

    《J2EE应用开发》复习大纲.doc ,考前必备文件,老师钦点考题

    J2EE-WEB开发规范汇总

    本人最近在考虑J2EE企业级...里面包含sun的JAVA规范,J2EE web开发规范和一般J2EE项目开发的流程规范,内容一定不全面,还望大家能在我基础上整理出更加好的内容,有修改,请记得分享,本人邮箱bbg2345@163.com,谢谢

    当前流行的J2EE WEB应用架构分析

    ### 当前流行的J2EE WEB应用架构分析 #### 一、引言 随着互联网技术的飞速发展,Java 2 Platform, Enterprise Edition (J2EE) 成为了构建企业级Web应用的重要平台之一。J2EE提供了多种技术组件,如JavaServer Pages...

    j2ee网络书店,一个简单的j2ee web开发例子

    java网络书店 。一个简单的j2ee web开发例子, access数据库,tomcat resin 等主流的web服务器都可以部署应用 。实现了网络书店的基本的功能 用户订单,退订,管理员 管理图书,用户等功能

    Web应用开发j2ee教学大纲.doc

    《Web应用开发技术》课程是Java软件开发方向的专业核心课程,着重讲解J2EE(Java 2 Enterprise Edition)的关键技术和应用。课程旨在让学生理解和掌握J2EE开发平台的基本概念,特别是其中的Servlet、JSP、JDBC、会话...

    J2EE安全 (web开发)

    关于j2EE开发的常见安全问题。 关于j2EE开发的常见安全问题。

    J2EE实训教学大纲

    2、在上机实验中,提高学生对J2EE各部分内容的综合使用能力,逐步掌握使用J2EE开发企业级应用的规律与技巧。 3、在对J2EE项目的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。

    J2EE项目开发与设计随书源码

    J2EE是Oracle公司推出的用于构建企业级分布式应用程序的平台,它为开发、部署和管理基于Web的应用程序提供了全面的框架和服务。 在J2EE的开发中,我们通常会涉及到以下几个关键知识点: 1. **Servlet**:Servlet是...

    MVC设计模式在J2EE Web开发中的研究与实现pdf

    ### MVC设计模式在J2EE Web开发中的研究与实现 #### 摘要与背景介绍 MVC(Model-View-Controller)作为一种当前广为流行的软件设计模式,在J2EE(Java 2 Enterprise Edition)平台上的应用越来越受到重视。随着...

    j2ee项目开发经验分享

    j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发...

    J2EE应用开发实践 .rar

    本实践指南将深入探讨J2EE的核心概念和技术,以及如何将其应用于实际项目开发。 J2EE平台的核心特性包括模块化、可移植性、安全性和性能优化。它提供了多种服务,如Web容器、EJB(Enterprise JavaBeans)容器、JMS...

    J2EE web app 3.1 xsd

    J2EE web app 3.1 xsd

Global site tag (gtag.js) - Google Analytics