java的框架是轻量级的_jfast: 1. 它是一款轻量级 Java Web 框架,

jfast

它是一款轻量级 Java Web 框架,基于MVC架构

内置 IOC(基于guice)、AOP(基于guice,cglib)、ORM、DAO、MVC 等特性

基于 Servlet 3.0 规范

使用 Java 注解取代 XML 配置

支持jsp,velocity等视图

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

新手能在较短时间内入门

核心具有良好的定制性且插件易于扩展

入门教程

创建一个 Maven Web 工程

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

Jfast-demo/

┗ src/

┗ main/

┗ java/

┗ resources/

┗ webapp/

┗ pom.xml

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

org/

┗ jfast/

┗ demo/

┗ contrller/

┗ entity/

┗ service/

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

配置 Maven 依赖

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

**

com.jfast

jfast

1.0

**

3.编写Jfast核心配置文件

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

##jfast基础配置

##配置包扫描路径

jfast.basePackage=com.jfast

##配置视图类型

jfast.viewType=jsp

##配置view资源路径

jfast.baseViewPath=/WEB-INF/jsp/

##数据源配置

jfast.dataSource.type=mysql

jfast.dataSource.url=jdbc:mysql://localhost:3306/jfast?characterEncoding=utf8

jfast.dataSource.username=root

jfast.dataSource.password=123456

读取properties文件属性值

在jfast中,只需使用@ConfigurationProperties注解即可

配置文件

要读取jfast.properties的配置信息非常简单,例如我们配置内容如下:

jfast.myconfig.name=aaa

jfast.myconfig.passowrd=bbb

jfast.myconfig.age=10

要读取这个配置信息,我们需要定义我们的一个model类,并通过@ConfigurationProperties注解给我们的类配置上类与配置文件的对应关系,如下所示:

@ConfigurationProperties(prefix="jfast.myconfig")

public class MyConfigModel{

private String name;

private String password;

private int age;

//getter setter 略

}

//更高级用法

@ConfigurationProperties可以指定要读取的properties文件

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

4.开始代码开发

/**

数据库实体类

**/

@Table(name ="user_info",primaryKey = {"id"})

public class UserInfo {

private long id;

private String username;

private String password;

// getter/setter

}

/**

编写Controller

**/

@Controller

@RequestMapping("/user")

public class UserController {

@Inject

private UserService userService;

public void index(){

}

@RequestMapping("/list")

public void list(){

}

//提示:方法中的@RequestMapping可以进行省略,此时jfast将会把方法名当成

actionKey进行url映射

}

/**

编写UserService 接口

**/

@Controller

@RequestMapping("/user")

public interface UserService {

//定义接口方法

}

/**

编写UserService 接口

**/

@Bean

public interface UserServiceImpl implements UserService{

}

5.ORM层的使用

5.1 DefaultJdbcTemplate

//返回实体类对象

UserInfo userInfo = jdbcTemplate.findOne("select * from user_info where id = ?",UserInfo.class,1);

return userInfo;

//返回实体类集合

List list= jdbcTemplate.findAll("select * from user_info where id = ?",UserInfo.class,1);

return userInfo;

//返回map集合

Map reMap = jdbcTemplate.findMap("select id,password from user_info where id = ?","information",1);

return rep;

//insert操作

UserInfo userInfo = new UserInfo();

userInfo.setName("hello");

userInfo.setPassword("123456");

boolean flag = jdbcTemplate.insert(userInfo);

5.2 数据库事物

在jfast中对于数据库事物的处理,您无需编写任何代码,只需使用@Transaction注解即可完成,代码入下

@Bean

public class JfastServiceImpl implements JfastService{

@Transaction

public void login(){

}

}

3.多源数据库配置

jfast.dataSource.information.url=jdbc:mysql://localhost:3306/information?characterEncoding=utf8

jfast.dataSource.master.username=root

jfast.dataSource.master.password=123456

jfast.dataSource.master.basePackage=com.jfast.entity.master

jfast.dataSource.master.dataSourceClassName=com.jfast.framework.web.orm.dataSource.DefaultDataSourceFactory

jfast.dataSource.slave.url=jdbc:mysql://localhost:3306/stroe?characterEncoding=utf8

jfast.dataSource.slave.username=root

jfast.dataSource.slave.password=123456

jfast.dataSource.slave.basePackage=com.jfast.entity.slave

jfast.dataSource.slave.dataSourceClassName=com.jfast.framework.web.orm.dataSource.DefaultDataSourceFactory

多源数据库事物

@Bean

public class JfastServiceImpl implements JfastService{

@Transaction(configName = "slave")

public void login(){

}

@Transaction(configName = "master")

public void insert(){

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个非常简单的MVC框架,实现了类似Spring MVC的基本功能。 1、包括自动扫描绑定映射路径,只要在web.xml中指定扫描包,系统启动后会将请求url绑定到指定的处理方法上。如: 在web.xml中定义如下: <context-param> <param-name>ScanPackage</param-name> <param-value>com.mvc.controller</param-value> </context-param> 容器在启动时候,会将com.mvc.controller下所有映射路径绑定处理方法上,假如在扫描包中定义下列类: import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.hxw.simple.light.mvc.annotation.MappingMethodAnnotation; import com.hxw.simple.light.mvc.view.SimpleModelView; import com.mvc.verification.VerificationCode; public class LoginController { @MappingMethodAnnotation(mappingMethod = "/login.do") public String login(HttpServletRequest request, HttpServletResponse response) { return "login/main"; } @MappingMethodAnnotation(mappingMethod = "/loginvm.do") public SimpleModelView loginView(HttpServletRequest request, HttpServletResponse response) { SimpleModelView mv = new SimpleModelView("login/mainmv"); Map<String, String> m = new HashMap<String, String>(); m.put("beij", "北京"); m.put("sha", "上海"); m.put("nanj", "南京"); mv.setAttribute("city", m); return mv; } @MappingMethodAnnotation(mappingMethod = "/Verify.do") public void service(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; response.setContentType("image/jpeg"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); VerificationCode vCode = new VerificationCode(); BufferedImage bufferImage = vCode.getImageData(); HttpSession session = request.getSession(); response.addCookie(new Cookie("JSSESIONID", session.getId())); ServletOutputStream responseOutputStream = response.getOutputStream(); ImageIO.write(bufferImage, "JPEG", responseOutputStream); responseOutputStream.flush(); responseOutputStream.close(); } } 那么在接到url请求如:http://localhost:8080/TestSimpleMVC/loginvm.do 会调用指定的方法处理。 2、支持视图定义,在web.xml定义了视图路径后: <servlet> <servlet-name>DelegateForwardServlet</servlet-name> <servlet-class>com.hxw.simple.light.mvc.servlet.DelegateForwardServlet</servlet-class> <init-param> <param-name>prefix</param-name> <param-value>/WEB-INF/view/</param-value> </init-param> <init-param> <param-name>suffix</param-name> <param-value>.jsp</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DelegateForwardServlet</servlet-name> <url-pattern>/SYS_FORWARD_URL.fo</url-pattern> </servlet-mapping> 只需在执行完方法后,返回字符串:如return "login/main"就会跳转到指定视图,还可以在视图中用EL表单式访问modelview数据,例子如: SimpleModelView mv = new SimpleModelView("login/mainmv"); Map<String, String> m = new HashMap<String, String>(); m.put("beij", "北京"); m.put("sha", "上海"); m.put("nanj", "南京"); mv.setAttribute("city", m); return mv; 3、支持数据参数自动绑定如: @ParamAttribute(type = ParamaAttributeType.REQUEST, key = "userPassword") String s, @ParamAttribute(type = ParamaAttributeType.SESSION, key = "11212") String s1, @ParamAttribute(type = ParamaAttributeType.SERVLETCONTEXT, key = "32312") String s2, @ParamAttribute(type = ParamaAttributeType.REQUEST, key = "userNames") String[] s3 系统根据参数指定的范围,这指定范围内赋值到参数上,你还可以直接使用javabean做参数绑定,如: public class User extends PaginatedHelper { private static final long serialVersionUID = -8225389551152428829L; private String userName; private String userPassword; public User() { super(); } public User(String userName, String userPassword) { super(); this.userName = userName; this.userPassword = userPassword; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } 在方法上带上 Uer user后,属性名称相同的数据就会赋值到javabean上。不必再使用繁琐的user.setUserName(request.getParameter("userName")); 3、简便的jdbc操作 有查询模板QueryTemplate,命名查询NamedQueryTemplate及bean作为参数的BeanQueryTemplate等。支持返回javabean类型,javabean列表, MAP类型,map列表类型,统计结果queryForInt等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值