Jfinal☞随聊

最近在学用JFinal,跑了跑demo,照着教程弄了几个界面,看着源码,挺有启发的。一些之前没接触过的东西,现在试着花时间去学。发现自己也是喜欢编程的。(是否要讨论下开源对指导程序员学编程的作用?)

进了群,看别人吹水,发现能了解到很多东西,氛围跟OSC一样的热闹,倍感欣慰。

了解了一下前端框架bootstrap,模板freemarker。用了Dreampie开发的一些Jfinal插件。倍感亚历山大。要学的东西还很多,需要花更多时间才能跟得上,不然拖国家平均工资的后腿就不好了。

本周就是SHIRO了。

---------------------------------------------      分割线  2014.12.30     -----------------------------------------

Shiro的学习心得。

阅读了张开涛的博客jinnianshilongnian.iteye.com,里面关于Shiro有很详细的介绍,理论知识得到了提高。

看了Dreampie的jfinal-demo,里面用到了他自己写的Shiro插件,想着简单易用直接导入运行他的demo,没想到导入进去之后发现很多jar包maven没导好,不知道是否我的maven没有设置好的缘故,所以项目一直搭不起。

之后只能拆他的demo。

表结构用了他推荐的几张表,Shiro的认证和授权用了MyJdbcRealm,MyJdbcAuthzService暂时不知道什么时候用到(debug了一下,发现是启动项目的时候预加载角色和权限的),MyJdbcRealm这个类要在shiro.ini配置文件给SecurityManager提供自定义Realm

#realm
jdbcRealm = com.demo.common.shiro.MyJdbcRealm
securityManager.realm = $jdbcRealm

model跟表的映射用了TableBind插件,路径跟controller的映射用了RouteBind插件。

暂时测试了登录功能,登录成功后,会根据表中Role的Value值,去到哪个URL,设置地方在shiro.ini里面

;不同角色登陆到不同的url,R_USER:/order可以不配置,会默认使用successUrl
authc.successUrlMap = R_USER:/order,R_MEMBER:/order/region,R_MANAGER:/order/branch,R_ADMIN:/

我用他数据库的初始化数据,账户的Role为管理员,即R_ADMIN,所以登录成功后去到的路径为“/”。

----------------------------------------------------分割线-----------------------------------------------------

题外内容,基础很重要,要多熟悉。

1、认识HttpServletRequest对象

ServletRequest是接口,Http是现在流行的协议,(红薯)通过HttpServletRequest对象,可以得到用户(我)发给(OSC)的请求,里面中的一些东东。

String uri=request.getRequestURI();
String rad=request.getRemoteAddr();
String rh=request.getRemoteHost();
String ru=request.getRemoteUser();
int rp=request.getRemotePort();
String cp=request.getContextPath();
String la=request.getLocalAddr();
String ce=request.getCharacterEncoding();
String gm=request.getMethod();
String qs=request.getQueryString();

print:

    ======   This will get 客户机信息  start ====  
URI:/jfinal-fire/blog
RemoteAddr:0:0:0:0:0:0:0:1
RemoteHost:0:0:0:0:0:0:0:1
RemoteUser:null
RemotePort:56550
ContextPath:/jfinal-fire
LocalAddr:0:0:0:0:0:0:0:1
CharEncoding:UTF-8
Method:GET
QueryString:null
    ======   This will get 客户机信息  end ====

舉個栗子,只是想知道里面有什么东西而已。

2、认识Filter过滤器

写在web.xml中。可作用于进入Servlet之前,以及在退出Servlet之后;

使用它可以方便改变一个request和修改一个response,它能够在request到达Servlet之前预处理request,也可以再response离开Servlet时处理response。换种说法,Filter就是一个“Servlet Chaining”。

定义个MyFilter,当然是要实现Filter接口了。然后直接在web.xml中加上去。

<!--自定义过滤器 start-->
<filter>
	<filter-name>logFilter</filter-name>
	<filter-class>com.demo.common.kit.LogFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>logFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<!--自定义过滤器 end-->

之后呢,有什么自定义的属性,就先在init里面初始化。自己的FilterConfig config没法工作,原来是没先在这里给他找对象。

运行部分就在doFilter()里面了。

ServletContext context=getFilterConfig().getServletContext();

终于让我拿到ServletContext了。

3、final

修饰的类不可以被继承,有终结的意思;

修饰的方法不可以被重写Override;

修饰的属性为常量,要不声明时赋值,要不构造器中赋值(所有);

    若属性为原生数据类型,则值不变;若属性为引用类型,则引用地址不变,引用的对象本身可以变。

    (栈里的值不变;堆里的值可变)

你可能感兴趣的:(随聊)