初步使用JFinal实现简单登录demo

来源:互联网 发布:矩阵条件数多大算病态 编辑:程序博客网 时间:2024/05/18 01:46

一、环境的搭建(省略),在此使用的是JFinal手册推荐的启动方式,Tomcat启动方式百度,嘿哈。

二、使用mysql设计简单的数据库

三、整体结构

四、具体代码实现

User.java

public class User extends Model<User>{public static final User dao = new User();public List<User> findAll(){return find("select * from user");}public List<User> findByNameAndPwd(String name, String password){return find("select * from user where userName='"+name+"' and password='"+password+"'");}}
IndexController.java

public class IndexController extends Controller {public void index(){render("login.jsp");}}
LoginController.java

public class LoginController extends Controller{public void index(){//User user = getModel(User.class).findByNameAndPwd(getPara(0), getPara(1));;//User user = User.dao.findByNameAndPwd(getPara("userName"), getPara("password"));//user.findByNameAndPwd(getPara(0), getPara(1));/** * 登录效验不能使用getModel方法,因此表单中name属性不能使用user.password这种命名方式 * 因为其直接把传递的参数封装成一个User对象,这样的话无论密码是啥都能登录 */List<User> users = User.dao.findByNameAndPwd(getPara("userName"),getPara("password"));if (users.size() > 0) {//找到用户setSessionAttr("userInfo", users.get(0));redirect("/user");} else {render("/login.jsp");}}}
UserController.java

public class UserController extends Controller{public void index(){//查询数据表中的数据setAttr("userList", User.dao.findAll());render("/userList.jsp");}}
LoginConfig.java

public class LoginConfig extends JFinalConfig{@Overridepublic void configConstant(Constants me) {/** * 配置常量 */PropKit.use("c3p0config.properties");me.setDevMode(PropKit.getBoolean("devMode", false));me.setViewType(ViewType.JSP);}@Overridepublic void configRoute(Routes me) {me.add("/", IndexController.class);me.add("/login", LoginController.class);me.add("/user", UserController.class);}public static C3p0Plugin createC3p0Plugin() {return new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());}@Overridepublic void configPlugin(Plugins me) {/** * 配置常用插件 *///c3p0连接池插件C3p0Plugin C3p0Plugin = createC3p0Plugin();me.add(C3p0Plugin);//数据库操作插件ActiveRecordPlugin arp = new ActiveRecordPlugin(C3p0Plugin);me.add(arp);//该方法建立了数据库表名到 Model 的映射关系,下面的示例为默认主键是idarp.addMapping("user", User.class);//主键不是id的示例//arp.addMapping("user","user_id",User.class);}@Overridepublic void configInterceptor(Interceptors me) {}@Overridepublic void configHandler(Handlers me) {}}
五、启动测试

六、小结

1.初步使用时,在配置路径时卡了好长一段时间,在这里推荐小白好好阅读JFinal开发手册第三章,多动手操作,看看各种配置的不同效果(例如加不加'/'的不同效果)。

2.其实在使用getModel时被坑了。该方法用手册原话来讲:getModel 用来接收页面表单域传递过来的model 对象,表单域名称以”modelName.attrName”
方式命名,除了支持 JFinal Model 对象以外,getModel 同时也支持传统的Java Bean 初读手册时没有好好理解结果在这方面浪费了好多时间。可见认真阅读是多么的重要呀。






0 0
原创粉丝点击