时间:2023-05-24 14:57:02 | 来源:网站运营
时间:2023-05-24 14:57:02 来源:网站运营
Java Web初学者探索学习笔记6—快速开发项目实例:Structs2作为控制器(Controller)来建立模型与视图的数据交互。第一步:搭建dynamicweb项目,修改webcontext为webroot;
Hibernate主要是利用其实现更简便的数据库交互。
Spring前面都说到了,作为分层总体框架,并对以上两者整合。
entity封装所有的实体;第六步:UI通用架构(比如easyUI)源文件夹拷贝到webroot下,备用和修改;
dao为数据访问层接口,及其实现类的包dao.impl;
service也有将该名命为biz的,业务逻辑层接口,及其实现类的包service.impl;
action也有命名为web或vo的;
util为工具类包,这个包一般不加前面的域名、项目名,因为这个部分比较通用,与本项目是独立的,可重用和被调用的;
由于eclipse有比较严格的js校验,源文件夹导入后其中jquery.min.js文件会报错,可以将eclipse中所在的项目配置文件.project中的JavaScriptvalidator和nuature中jsnature规则配置项删除,然后重新进入后,将该js文件打开后内容剪贴粘贴后即可解决;
强迫症患者建议修改,其他人不改也不影响使用;
package cn.hust.dianshang.entity;public class Dep{ private Long uuid; private String name; private String tele; get/set(默认方法导入)}
编写该类的映射文件.xml<?xml version="1.0" encoding="utf-8"><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="cn.hust.dianshang.entity.Dep" table="DEP"> <id name="uuid"> <generator class="native"/> </id> <property name="name"/> <property name="tele"/> </class name></hibernate-mapping>
第二步:数据访问层dao类及实现。package cn.hust.dianshang.dao;import java.util.List;import cn.hust.dianshang.entity.Dep;/**搭建数据访问层接口*/public interface IDepDao{ //返回所有记录 public List<Dep> getList();}
在dao.impl包下建立实现类DepDao,由于其是数据访问层的实现类,所以还要继承HibernateDaoSupport的方法(部分方法省的自己实现了)。package cn.hust.dianshang.dao.impl;import java.util.List;/**部门数据访问类*/public class DepDao extends HibernateDaoSupport implements IDepDao{ //返回所有记录 public List<Dep> getList(){ return getHibernateTemplate().find("from Dep"); }}
第三步:业务逻辑层service类及实现。package cn.hust.dianshang.service;import java.util.List;import cn.hust.dianshang.entity.Dep;/**搭建部门业务逻辑层接口*/public interface IDepService{ //返回所有记录 public List<Dep> getList();}
在service.impl包下建立实现类DepService。package cn.hust.dianshang.service.impl;import java.util.List;/**部门数据访问实现*/public class DepService implements IDepService{ //由于需要调用dao的数据,所以属性中需定义IDepDao类型对象,方便调用相关方法和属性参数 private IDepDao depDao; public void setDepDao(IDepDao depDao){ this.depDao = depDao; } //返回所有记录 @OverRide public List<Dep> getList(){ return depDao.getlist(); }}
第四步:完成action。package cn.hust.dianshang.action;import java.util.List;/**部门action*/public class DepAction{ //由于需要调用service层方法和属性,故构建私有属性IDepServce private IDepServce depService; public void setDepService(IDepService depService){ this.depService = depService; } //返回所有记录 @OverRide public String list() throw Exception { List<Dep> list = depService.getList(); //用fastjson转换为json字符串 String jsonString = JSON.toJSONString(list); //通过servlet输出获取的字符串 HttpServletResponse response = ServletActionContext.getResponse(); response.setCharactorEncoding("UTF-8"); response.getWrite().print(jsonString); //由于只展示dep查询结果,不再跳转页面,故return结果不再录入,设定为null return null; }}
第五步:编写修改配置文件。<!-- 部门数据访问层 --><bean id="depDao" class="cn.hust.dianshang.dao.impl.DepDao"> <property name="sessionFactory" ref="sessionFactory"> </property></bean><!-- 部门业务逻辑层 --><bean id="depService" class="cn.hust.dianshang.service.impl.DepService"> <property name="depDao" ref="depDao"> </property></bean><!-- 部门action --><bean id="depAction" class="cn.hust.dianshang.action.DepAction"> <property name="depService" ref="depService"> </property></bean>
在structs.xml中配置文件。<structs> <package name="default" namespace="/" extends="structs-default"> <!-- 通配符以可以调用所有dep开头的action方法 --> <action name="dep_*" class="depAction" method={1}></action> </package></structs>
第六步:测试后端代码。<script type="text/javascript"> $(function()){ $('#grid').datagrid({ url:'dep_list.action', columns:[[ {field:'uuid',title:'编号',width:50}, {field:'name',title:'名称',width:100}, {field:'tele',title:'电话',width:200} ]] }); }</script><table id="grid"> </table>
关键词:实例,项目,笔记,学习,学者