1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/huangyong-smart-framework

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Smart Framework

简介

1. Это — лёгкий Java Web-фреймворк

  • Включает в себя IOC, AOP, ORM, DAO и MVC;
  • Основан на Servlet 3.0;
  • Использует Java-аннотации вместо XML-конфигурации.

2. Он обеспечивает полное разделение между фронтендом и бэкендом

  • Клиент может использовать HTML или JSP в качестве шаблонов для отображения данных;
  • Сервер может предоставлять REST-сервисы (с использованием REST-плагина);
  • Клиент получает данные с сервера через AJAX и отображает их на странице.

3. Он может повысить эффективность разработки приложений

  • Подходит для небольших и средних веб-приложений;
  • Новичкам легко освоить за короткое время;
  • Имеет хорошую настраиваемость и расширяемость благодаря ядру и плагинам.

Архитектура

Вступление

1. Создание Maven Web-проекта

Структура всего проекта выглядит следующим образом:

smart-sample/
  ┗ src/
    ┗ main/
      ┗ java/
      ┗ resources/
      ┗ webapp/

В каталоге java создайте следующую структуру каталогов пакетов:

org/
  ┗ smart4j/
    ┗ sample/
      ┗ action/
      ┗ entity/
      ┗ service/

Таким образом, базовый пакет будет называться org.smart4j.sample, и он будет использоваться в последующей конфигурации.

2. Настройка зависимостей Maven

Отредактируйте файл pom.xml и добавьте зависимость от smart-framework:

<dependency>
    <groupId>org.smart4j</groupId>
    <artifactId>smart-framework</artifactId>
    <version>[версия]</version>
</dependency>

Примечание: необходимо указать конкретную версию. Если вы используете соответствующие Smart-плагины, вам также потребуется настроить их отдельно.

3. Написание конфигурации Smart

Создайте файл с именем smart.properties в каталоге resources. Его содержимое должно быть таким:

smart.framework.app.base_package=org.smart4j.sample
smart.framework.app.home_page=/users

smart.framework.jdbc.driver=com.mysql.jdbc.Driver
smart.framework.jdbc.url=jdbc:mysql://localhost:3306/smart-sample
smart.framework.jdbc.username=root
smart.framework.jdbc.password=root

Примечание: эти настройки должны быть адаптированы под вашу конкретную ситуацию.

4. Создание класса Entity

Пример кода для класса User:

package org.smart4j.sample.entity;

import org.smart4j.framework.orm.annotation.Entity;

@Entity
public class User {

    private long id;

    private String username;

    private String password;

    // getter/setter
}

5. Создание интерфейса Service и его реализация

Интерфейс UserService:

package org.smart4j.sample.service;

import java.util.List;
import java.util.Map;
import org.smart4j.sample.entity.User;

public interface UserService {

    List<User> findUserList();

    User findUser(long id);

    boolean saveUser(Map<String, Object> fieldMap);

    boolean updateUser(long id, Map<String, Object> fieldMap);

    boolean deleteUser(long id);
}

Реализация UserServiceImpl:

package org.smart4j.sample.service.impl;

import java.util.List;
import java.util.Map;
import org.smart4j.framework.orm.DataSet;
import org.smart4j.framework.tx.annotation.Service;
import org.smart4j.framework.tx.annotation.Transaction;
import org.smart4j.sample.entity.User;
import org.smart4j.sample.service.UserService;

@Service
public class UserServiceImpl implements UserService {

    @Override
    public List<User> findUserList() {
        return DataSet.selectList(User.class);
    }

    @Override
    public User findUser(long id) {
        return DataSet.select(User.class, "id = ?", id);
    }

    @Override
    @Transaction
    public boolean saveUser(Map<String, Object> fieldMap) {
        return DataSet.insert(User.class, fieldMap);
    }

    @Override
    @Transaction
    public boolean updateUser(long id, Map<String, Object> fieldMap) {
        return DataSet.update(User.class, fieldMap, "id = ?", id);
    }

    @Override
    @Transaction
    public boolean deleteUser(long id) {
        return DataSet.delete(User.class, "id = ?", id);
    }
}

6. Создание Action-класса

Пример кода для UserAction:

package org.smart4j.sample.action;

import java.util.List;
import java.util.Map;
import org.smart4j.framework.ioc.annotation.Inject;
import org.smart4j.framework.mvc.DataContext;
import org.smart4j.framework.mvc.annotation.Action;
import org.smart4j.framework.mvc.annotation.Request;
import org.smart4j.framework.mvc.bean.Params;
import org.smart4j.framework.mvc.bean.Result;
import org.smart4j.framework.mvc.bean.View;
import org.smart4j.sample.entity.User;
import org.smart4j.sample.service.UserService;

@Action
public class UserAction {

    @Inject
    private UserService userService;

    @Request.Get("/users")
    public View index() {
        List<User> userList = userService.findUserList();
        DataContext.Request.put("userList", userList);
        return new View("user.jsp");
    }

    @Request.Get("/user")
    public View create() {
        return new View("user_create.jsp");
    }

    @Request.Post("/user")
    public Result save(Params params) {
        Map<String, Object>
``` **6. Написание представления**

В Action были использованы JSP в качестве технологии отображения представления, необходимо написать следующие файлы JSP:
* user.jsp;
* user_list.jsp;
* user_create.jsp;
* user_edit.jsp.

**Примечание**: для получения более подробной информации рекомендуется обратиться к Smart Sample.

**Улучшение**

TODO

**Пример**

* Smart Sample: http://git.oschina.net/huangyong/smart-sample;
* Smart Bootstrap: http://git.oschina.net/huangyong/smart-bootstrap;
* Smart REST Server: http://git.oschina.net/huangyong/smart-rest-server;
* Smart REST Client: http://git.oschina.net/huangyong/smart-rest-client.

**Приложение**

**Связанные плагины**

Обратите внимание: плагины зависят от фреймворка и не могут использоваться отдельно.

* smart-plugin-security  плагин безопасности на основе Apache Shiro;
* smart-plugin-cache  плагин кэширования на основе аннотаций;
* smart-plugin-i18n  универсальный плагин I18N;
* smart-plugin-mail  плагин отправки и получения почты на основе Apache Commons Email;
* smart-plugin-template  плагин шаблона на основе Apache Velocity;
* smart-plugin-job  плагин планирования заданий на основе Quartz;
* smart-plugin-soap  плагин веб-сервиса SOAP на основе Apache CXF;
* smart-plugin-rest  плагин веб-службы REST на основе Apache CXF;
* smart-plugin-hessian  плагин RMI на основе Hessian;
* smart-plugin-xmlrpc  плагин XML-RPC на основе Apache XML-RPC;
* smart-plugin-search  плагин поисковой системы на основе Apache Lucene;
* smart-plugin-mybatis  плагин уровня сохраняемости данных на основе MyBatis;
* smart-plugin-args  плагин привязки параметров метода действия;
* smart-plugin-c3p0  плагин пула соединений на основе C3P0;
* smart-plugin-druid  плагин пула подключений на основе Druid.

**Связанные модули**

Обратите внимание: модули не зависят от фреймворка и могут использоваться независимо.

* smart-sso  модуль единого входа на основе Jasig CAS;
* smart-cache  общий модуль кэша с реализацией на основе памяти;
* smart-cache-ehcache  модуль кэша на основе EhCache;
* smart-cache-redis  модуль кэша на основе Jedis.

**Справочные материалы**

* Серия статей о Smart: http://my.oschina.net/huangyong/blog/158380;
* Maven: http://my.oschina.net/huangyong/blog/194583.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Лёгкий Java Web-фреймворк. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/huangyong-smart-framework.git
git@api.gitlife.ru:oschina-mirror/huangyong-smart-framework.git
oschina-mirror
huangyong-smart-framework
huangyong-smart-framework
master