Jeecms开发学习笔记
青岛海尔软件有限公司
@带吴钩

目录
1.文档说明    3
2. 关键词    3
2.1MVC    3
2.2实体    3
2.3实现类    3
3. 从Act到Mng到Dao    4
3.1Act    4
3.1.1什么是Act?    4
3.1.2Act实现从html到jspx    4
3.1.3从Act到Mng    5
3.2Mng和MngImpl    7
3.2.1什么是Mng和MngImpl?    7
3.2.2Mng    7
3.2.3从MngImpl到Dao    8
3.3Dao和DaoImpl    9
3.3.1什么是Dao和DaoImpl?    9
4. 实体类    9
4.1为什么使用实体类?    9
4.2id的作用    10
5配置文件    11
5.1数据库配置文件    11
5.2国际化    12

1.文档说明
    本文档来源一个现实项目的学习,笔者须在Jeecms框架内实现前台提交简历,后台查看简历的过程。而笔者毫无java web开发经验。
    因此本文档适用于毫无java web开发经验人,将以Jeecms的spring MVC + spring + hibernate框架为结构进行介绍。建立一个实体,从数据的写入到查为流程,进行一个详细的描述。
2.关键词
2.1MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面 显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于 映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
2.2实体
实体类主要是作为数据管理业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分
实体类的主要职责存储管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。
2.3实现类
    就是接口的实现类,实现了接口中那些方法的方法体。
3.从Act到Mng到Dao
3.1Act
3.1.1什么是Act?
在我的理解,Act就是接受请求然后执行方法的类,是前台页面和后台处理衔接的类,是重要的类。一般地,注释掉Act下的内容,就失去了衔接的类,我们不需要重新编译实体,Mng,Dao,也不会影响其他的类。这时候,新编译的Act实现与前台的衔接后,就会走到它所注入的Mng,Dao,最后进入表。
3.1.2Act实现从html到jspx
  在参照guestbook的时候,你会发现并没有guestbook.jspx这个文件,那么它是怎么来的呢?我们看GuestbookAct.java中下面这段代码:
@RequestMapping(value = "/guestbook*.jspx", method = RequestMethod.GET)
    public String index(Integer ctgId, HttpServletRequest request,
            HttpServletResponse response, ModelMap model) {
        CmsSite site = Site(request);
        FrontUtils.frontData(request, model, site);
        FrontUtils.frontPageData(request, model);
        CmsGuestbookCtg ctg = null;
        if (ctgId != null) {
            ctg = cmsGuestbookCtgMng.findById(ctgId);
        }
        if (ctg == null) {
            // 留言板首页
            TplPath(request, SolutionPath(),TPLDIR_SPECIAL, GUESTBOOK_INDEX);
        } else {
            // 留言板类别页
            model.addAttribute("ctg", ctg);
            TplPath(request, SolutionPath(),
                    TPLDIR_SPECIAL, GUESTBOOK_CTG);
        }
    }
这段代码是一个拦截,用于判断进入哪个guestbook页面(是未登录的guestbook_index或者guestbook_detail)。
@RequestMapping注解中value的值表示一个请求,guestbook*.jspx表示的是形如guestbookXXXXXX可以为空).jspx的请求,我们输入一个.../guestbook.jspxurl就相当于发送了这个请求,然后进入由@RequestMapping注解的一个方法。
我们假设这个时候没有留言类别,也就是说ctg==nulltrue,这时就会
TplPath(request, SolutionPath(),TPLDIR_SPECIAL,
GUESTBOOK_INDEX)
在这里site是你设置的site一般与projectresource和autowired注解的区别名一致,TPLDIR_SPECIAL已经配置好了,指的是t文件夹下的special文件,重点说一下GUESTBOOK_INDEX,在Act中,有一个定义代码:
public static final String GUESTBOOK_INDEX ="tpl.guestbookIndex";
那么tpl.guestbookIndex又是什么呢,这个需要在国际化文件中进行配置,两个国际化文件分别是messages_en_US.propertiesmessages_zh_CN.properties,这里显然已经配置好了,当你要写自己的Act时就需要自行配置了。
于是,我们输入.../guestbook.jspx时,就会走到GuestbookAct这个类,进入这个方法,最后return到这个guestbook_index页面,于是就从html变成了jspx,代码就是这样实现的。
jspx进行ajax提交我们不多提,只需要稍看guestbook_index就能就能了解。
3.1.3从Act到Mng
依然是参考guestbook,我们看guestbookAct中这样一段代码:
@RequestMapping(value = "/guestbook.jspx", method = RequestMethod.POST)
    public void submit(Integer siteId, Integer ctgId, String title,
            String content, String email, String phone, String qq,
            String captcha, HttpServletRequest request,
            HttpServletResponse response, ModelMap model) throws JSONException {
        CmsSite site = Site(request);
        CmsUser member = User(request);
        if (siteId == null) {
            siteId = Id();
        }
        JSONObject json = new JSONObject();
        try {
            if (!imageCaptchaService.validateResponseForID(session
                    .getSessionId(request, response), captcha)) {
                json.put("success", false);
                json.put("status", 1);
                derJson(response, String());
                return;
            }
        } catch (CaptchaServiceException e) {
            json.put("success", false);
            json.put("status", 1);
            derJson(response, String());
            log.warn("", e);
            return;
        }
        String ip = IpAddr(request);
        cmsGuestbookMng.save(member, siteId, ctgId, ip, title, content, email,
                phone, qq);
        json.put("success", true);
        json.put("status", 0);
        derJson(response, String());
    }
    @Autowired
    private CmsGuestbookCtgMng cmsGuestbookCtgMng;
    @Autowired
    private CmsGuestbookMng cmsGuestbookMng;
    @Autowired
    private SessionProvider session;
    @Autowired
    private ImageCaptchaService imageCaptchaService;
Json我们不多做介绍,在Jeecms框架下,想要处理带有验证码提交的数据时,我们可以复制之后稍作修改,方法是平凡的,重点看红框的部分。
第一个红框框中用到了cmsGuestbookMng的save方法,下面的
json.put("success", true);
json.put("status", 0);
是关于验证码的信息,在html中的ajax提交方法有如下的判断:
if(data.status==0) {
                                    alert("留言成功");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。