light java framework_GitHub - xfsuper/light-framework: 轻量级javaweb框架

#Light Framework

##简介

###1. 它是一款轻量级 Java Web 框架

内置 IOC、AOP(待实现)、ORM(待实现)、DAO(待实现)、MVC 等特性

基于 Servlet 3.0 规范

使用 Java 注解取代 XML 配置

###2. 它使应用充分做到“前后端分离”

客户端可使用 HTML 或 JSP 作为视图模板

服务端可发布 REST 服务(使用 REST 插件)(待实现)

客户端通过 AJAX 获取服务端数据并进行界面渲染

###3. 它可提高应用程序的开发效率

面向基于 Web 的中小规模的应用程序

新手能在较短时间内入门

##入门

###1. 创建一个 Maven Web 工程

整个工程的目录结构如下:

light-sample/

┗ src/

┗ main/

┗ java/

┗ resources/

┗ webapp/

┗ pom.xml>

在 java 目录下,创建以下包名目录结构:

org/

┗ light4j/

┗ sample/

┗ action/

┗ entity/

┗ service/

可见,基础包名为:org.light4j.sample,下面的配置中会用到它。

###2. 配置 Maven 依赖

编辑pom.xml 文件,添加 light-framework 依赖:

org.light4j

light-framework

1.0.0

###3. 编写 Light 配置

在 resources 目录下,创建一个名为 light.properties 的文件,内容如下:

light.framework.app.base_package=org.light4j.sample

light.framework.app.home_page=/users

light.framework.jdbc.driver=com.mysql.jdbc.Driver

light.framework.jdbc.url=jdbc:mysql://localhost:3306/light-sample

light.framework.jdbc.username=root

light.framework.jdbc.password=123456

提示:需根据实际情况修改以上配置。

###4. 建库,数据库用mysql

-- ----------------------------

-- Table structure for customer

-- ----------------------------

DROP TABLE IF EXISTS `customer`;

CREATE TABLE `customer` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

`contact` varchar(255) DEFAULT NULL,

`telephone` varchar(255) DEFAULT NULL,

`email` varchar(255) DEFAULT NULL,

`remark` text,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of customer

-- ----------------------------

INSERT INTO `customer` VALUES ('1', 'customer1', 'Jack', '13512345678', 'Jack@gmail.com', null);

INSERT INTO `customer` VALUES ('2', 'customer2', 'Rose', '13623456789', 'rose@gmail.com', null);

###5. 编写 Entity 类

package org.light4j.sample.model;

/**

* 客户

*

* @author longjiazuo

*

*/

public class Customer {

/**

* ID

*/

private long id;

/**

* 客户名称

*/

private String name;

/**

* 联系人

*/

private String contact;

/**

* 电话号码

*/

private String telephone;

/**

* 邮箱地址

*/

private String email;

/**

* 备注

*/

private String remark;

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getContact() {

return contact;

}

public void setContact(String contact) {

this.contact = contact;

}

public String getTelephone() {

return telephone;

}

public void setTelephone(String telephone) {

this.telephone = telephone;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getRemark() {

return remark;

}

public void setRemark(String remark) {

this.remark = remark;

}

}

###6. 编写 Service 类

package org.light4j.sample.service;

import java.util.List;

import java.util.Map;

import org.light4j.framework.annotatiom.Service;

import org.light4j.framework.helper.DataBaseHelper;

import org.light4j.sample.model.Customer;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* 提供客户数据服务

*

* @author longjiazuo

*

*/

@Service

public class CustomerService {

private static final Logger LOGGER = LoggerFactory

.getLogger(CustomerService.class);

/**

* 获取客户列表

*

* @return

*/

public List getCustomerList() {

String sql = "select * from customer";

return DataBaseHelper.queryEntityList(Customer.class, sql);

}

/**

* 获取客户

*

* @param id

* @return

*/

public Customer getCustomer(long id) {

String sql = "select * from customer where id=" + id;

return DataBaseHelper.queryEntity(Customer.class, sql);

}

/**

* 创建客户

*

* @param fieldMap

* @return

*/

public boolean createCustomer(Map fieldMap) {

return DataBaseHelper.insertEntity(Customer.class, fieldMap);

}

/**

* 更新客户

*

* @param id

* @param fieldMap

* @return

*/

public boolean updateCustomer(long id, Map fieldMap) {

return DataBaseHelper.updateEntity(Customer.class, id, fieldMap);

}

/**

* 删除客户

*

* @param id

* @return

*/

public boolean deleteCustomer(long id) {

return DataBaseHelper.deleteEntity(Customer.class, id);

}

}

###7. 编写 Action 类

package org.light4j.sample.controller;

import java.util.List;

import java.util.Map;

import org.light4j.framework.annotatiom.Action;

import org.light4j.framework.annotatiom.Controller;

import org.light4j.framework.annotatiom.Inject;

import org.light4j.framework.bean.Data;

import org.light4j.framework.bean.Param;

import org.light4j.framework.bean.View;

import org.light4j.sample.model.Customer;

import org.light4j.sample.service.CustomerService;

/**

* 处理客户相关请求

*

* @author longjiazuo

*

*/

@Controller

public class CustomerController {

@Inject

private CustomerService customerService;

/**

* 进入 客户列表 界面

*

* @param param

* @return

*/

@Action("get:/customer")

public View index(Param param) {

List customerList = customerService.getCustomerList();

return new View("customer.jsp").addModel("customerList", customerList);

}

/**

* 显示客户基本信息

*

* @param param

* @return

*/

@Action("get:/customer_show")

public View show(Param param) {

long id = param.getLong("id");

Customer customer = customerService.getCustomer(id);

return new View("customer_show.jsp").addModel("customer", customer);

}

/**

* 进入 创建客户 界面

*

* @param param

* @return

*/

@Action("get:/customer_create")

public View create(Param param) {

return new View("customer_create.jsp");

}

/**

* 处理 创建客户 请求

*

* @param param

* @return

*/

@Action("post:/customer_create")

public Data createSubmit(Param param) {

Map fieldMap = param.getMap();

boolean result = customerService.createCustomer(fieldMap);

return new Data(result);

}

/**

* 进入 编辑客户 界面

*

* @param param

* @return

*/

@Action("get:/customer_edit")

public View edit(Param param) {

long id = param.getLong("id");

Customer customer = customerService.getCustomer(id);

return new View("customer_edit.jsp").addModel("customer", customer);

}

/**

* 处理 编辑客户 请求

*

* @param param

* @return

*/

@Action("put:/customer_edit")

public Data editSubmit(Param param) {

long id = param.getLong("id");

Map fieldMap = param.getMap();

boolean result = customerService.updateCustomer(id, fieldMap);

return new Data(result);

}

/**

* 处理 删除客户 请求

*

* @param param

* @return

*/

@Action("delete:/customer_edit")

public Data delete(Param param) {

long id = param.getLong("id");

boolean result = customerService.deleteCustomer(id);

return new Data(result);

}

}

###8. 编写视图

在 Action 中使用了 JSP 作为视图展现技术,需要在编写以下 JSP 文件:

customer.jsp

customer_show.jsp

customer_create.jsp

customer_edit.jsp

####9. 编写配置文件

在src/main/resources下面增加下面几个配置文件:

数据库配置文件config.properties:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/light_sample

jdbc.username=root

jdbc.password=123456

数据库包名等配置文件light.properties:

light.framework.jdbc.driver=com.mysql.jdbc.Driver

light.framework.jdbc.url=jdbc:mysql://localhost:3306/light_sample

light.framework.jdbc.username=root

light.framework.jdbc.password=123456

light.framework.app.base_package=org.light4j.sample

light.framework.app.jsp_path=/WEB-INF/view/

light.framework.app.asset_path=/asset/

日志配置文件log4j.properties:

log4j.rootLogger=ERROR,console,file

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.File=${user.home}/logs/sample.log

log4j.appender.file.DatePattern='_'yyyyMMdd

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%d{HH:mm:ss,SSSS} %p %c (%L) -%m%n

log4j.logger.org.lightFramework.use=DEBUG

###10. 编写web.xml引入light-framework,在web.xml中引入下面的servlet即可:

DispatcherServlet

org.light4j.framework.DispatcherServlet

1

DispatcherServlet

/

如果上面没有问题,启动项目之后,在浏览器输入:http://127.0.0.1/light-sample/customer

没问题应该就可以看到下面内容了。

sample.png

提示:更多相关细节,请参考 Light Sample 示例。

##提高

TODO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值