淘宝卖家开通海外直邮美团卖家怎么添加商品品

jfinal添加数据,如何获取当前添加的数据的ID?
你好,想跟你请教个问题:我有3个表:user(用户表)、role(角色表)、user_role(用户角色表);我添加用户的时候,要在用户角色表里面添加对应的用户角色数据。怎么才能获取到当前添加那个用户的ID?或者有没有更好的方法,多多指教。
User u=new User();
u.set("user_account", "ni");
u.set("user_password", "wo");
u.getInt("user_id");
--- 共有 3 条评论 ---
非常感谢,我的问题解决了
获取user_account
是不是要用 u.getStr("user_account")您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
jfinal技术框架解析.docx 28页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
jfinal技术框架解析
你可能关注的文档:
·········
JFinal技术架构浅析1.1空间架构框架采用微内核全方位扩展架构,全方位是指其扩展方式在空间上的表现形式。整个空间架构由?Handler、Interceptor、Controller、Render、Plugin?五大部分组成。每个部分都是基于接口实现的,支持完整的自定义,使用灵活,扩展性强。空间架构图。HandlerInterceptorControllerRenderPlugin1.2逻辑架构框架的逻辑架构非常简单,就是一个经典的MVC模式演化、大致分成以下6个步骤:1.2.1Http包括?HttpServletRequest、HttpServletResponse,即客户端请求与响应1.2.2Filter所有请求的拦截器,相当于是一个闸口1.2.3Handler请求处理器,是对所有请求的公共处理,在这里我们可以做权限控制、安全验证等。它是一个责任链模式变种,由初始配置的Handler以及框架默认的ActionHandler构成一个链条,依次执行。1.2.4Action动作处理器,它是一个AOP+Command模式变种。由?ActionInvocation进行调度,先执行拦截器,最后执行具体方法。1.2.5Model模型层。在这个层面包括实体模型的定义、DB+ActiveRecord模式数据库操作的支持、从请求中解析出对应参数构造Model实例,可以把它看成是DAO。1.2.6Render渲染层。负责将服务端的数据组装成客户端需要的数据格式,然后response到客户端。支持多种视图的渲染:FreeMark、Jsp、VELOCITY以及自定义。HttpServletRequestHttpServletResponseJFinalFilter(所有请求的拦截器)?Interceptorn(拦截器)?Method(具体的方法)?ActionActionInvocation(动作调度器)?ActionHandler(动作处理器)?Handler(处理器)??Handler?ModelInjector(模型构造器)Model(模型定义)DB(数据库操作工具)Render(渲染器)?JSPFreeMarkVeloCity自定义View1.3代码架构?1.3.1包结构1.3.2包简介Aop:拦截器?Config:通用配置?Core:核心处理,主要是Controller的调度?Ext:扩展包?Handler:全局处理器I18N:国际化?util:一些工具类Log:日志类?Plugin:插件处理?Render:渲染处理,比如对于FreeMark的支持?Server:服务器?Token:令牌?Upload:文件上传处理?Validate:验证处理,主要是数据持久化时的验证1.4运作原理我们从一次新增页面的add?操作请求来看:?1.首先是客户端点击新增按钮,提交一个新增请求,请求中会带上服务端处理地址url2.所有请求都会被?JFinalFilter拦截,然后调用Handler?进行详细处理?3.Handler是一?个链条形式的调用,包括0-n个自定义Handler,?以及最后一个ActionHandler,依次执行,当然可以自定义跳出。4.进入ActionHandler后,首先会根据请求的target?从缓存的ActionMapping?中映射获取到具体操作对应的Action对象,这个对象里面封装了方法名、方法上面的拦截器,方法所在的Controller,controller上面的拦截器等。然后根据Action以及Controller实例构造出ActionInvocation。?5.接下来通过ActionInvocation的?invoke进行具体处理,这是一个明显的?Command模式的实现。首先是拦截器的调用,拦截器调用中会重新回调ActionInvocation的invoke,当拦截器调用完毕后,会调用当前操作的method6.当进入具体controller的新增方法时,调用基类getModel(Systemparam.class);这个方法会从request中解析出所需要的数据,通过反射设置给具体的?Model实体类,最终通过ActiveRecord来进行数据存储.7.最后是页面渲染render核心代码简介我们还是从一次新增请求的流程来看涉及到的核心类有哪些本身就是一个Http的过滤器,主要有3个方法2.1.1init(初始化)在服务器启动时执行一次,负责初始化框架的全局配置2.1.2destory(销毁)在服务器停止时运行一次,负责销毁框架的全局配置2.1.3doFilter(拦截)拦截所有的客户端请求,处理具体逻辑2.2JFinalConfig是一个API引导式配置接口,供使用者自定义实现。里面主要配置常量、配置路由、配置处理
正在加载中,请稍后...JFinal处置请求的流程 - 软件架构设计当前位置:& &&&JFinal处置请求的流程JFinal处置请求的流程&&网友分享于:&&浏览:0次JFinal处理请求的流程
①从文件中可以看出本质上是一个
&!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"/dtd/web-app_2_3.dtd" &
&display-name&jfinal&/display-name&
&filter-name&jfinal&/filter-name&
&filter-class&com.jfinal.core.JFinalFilter&/filter-class&
&init-param&
&param-name&configClass&/param-name&
&param-value&com.demo.config.DemoConfig&/param-value&
&/init-param&
&filter-mapping&
&filter-name&jfinal&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&welcome-file-list&
&welcome-file&index.html&/welcome-file&
&/welcome-file-list&
&/web-app&
②重写了方法,所有的处理都在该方法中完成
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)
HttpServletResponse response = (HttpServletResponse)
request.setCharacterEncoding(encoding);
String target = request.getRequestURI();
if (contextPathLength != 0)
target = target.substring(contextPathLength);
boolean[] isHandled = {false};
handler.handle(target, request, response, isHandled);
catch (Exception e) {
if (log.isErrorEnabled()) {
String qs = request.getQueryString();
log.error(qs == null ? target : target + "?" + qs, e);
if (isHandled[0] == false)
chain.doFilter(request, response);
Handler的实现类
③接口有多个实现类,我们分析的方法
* 1: Action action = actionMapping.getAction(target)
* 2: new ActionInvocation(...).invoke()
* 3: render(...)
public final void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
if (target.indexOf(".") != -1) {
isHandled[0] = true;
String[] urlPara = {null};
Action action = actionMapping.getAction(target, urlPara);//根据ActionMapping中的映射获取处理当前请求的Action
if (action == null) {
if (log.isWarnEnabled()) {
String qs = request.getQueryString();
log.warn("404 Action Not Found: " + (qs == null ? target : target + "?" + qs));
renderFactory.getErrorRender(404).setContext(request, response).render();
Controller controller = action.getControllerClass().newInstance();//实例化Controller处理类
controller.init(request, response, urlPara[0]);//初始化Controller
if (devMode) {
boolean isMultipartRequest = ActionReporter.reportCommonRequest(controller, action);
new ActionInvocation(action, controller).invoke();
if (isMultipartRequest) ActionReporter.reportMultipartRequest(controller, action);
new ActionInvocation(action, controller).invoke();//调用Controller中相应的处理方法(详见)
Render render = controller.getRender();//根据Controller中的设置获取数据和视图的对应类Render
if (render instanceof ActionRender) {//如果render是一个ActionRender,则再交给对应的Handler处理
String actionUrl = ((ActionRender)render).getActionUrl();
if (target.equals(actionUrl))
throw new RuntimeException("The forward action url is the same as before.");
handle(actionUrl, request, response, isHandled);
if (render == null)//如果render,则使用默认Render
render = renderFactory.getDefaultRender(action.getViewPath() + action.getMethodName());
render.setContext(request, response, action.getViewPath()).render();//调用Render实现类的render()方法进行渲染
Render的实现类
④在的方法中,请求先经过一系列拦截器
* Invoke the action.
public void invoke() {
if (index & inters.length)
inters[index++].intercept(this);
else if (index++ == inters.length)// index++ ensure invoke action only one time
// try {action.getMethod().invoke(controller, NULL_ARGS);} catch (Exception e) {throw new RuntimeException(e);}
action.getMethod().invoke(controller, NULL_ARGS);
catch (InvocationTargetException e) {
Throwable cause = e.getTargetException();
if (cause instanceof RuntimeException)
throw (RuntimeException)
throw new RuntimeException(e);
catch (RuntimeException e) {
catch (Exception e) {
throw new RuntimeException(e);
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有部分方法:
1、获取参数:getPara(String name);
getParaToInt(String name) ,将返回参数的值转为int;
getPara() ,url中参数连接为/v1-v2-v3,该方法请求返回v1-v2-v3参数整体值;
getPara(0) ,url中参数连接方式为/v1-v2-v3,该方法请求返回v1;
getParaToInt(1) ,将返回参数的值转为int,若url中参数连接方式为/2-3-N8,该方法请求返回3,n或N代表负数
2、文件上传:getFile(String name,saveUrl,maxSize,encode);
3、数据传递:setAttr(string,Object),存储的值在页面中使用el表达式能获取到;
4、返回客户端:render("test.html"),渲染名为 test.html 的视图,该视图的全路径为”/path/test.html”;
&render(”/other_path/test.html”),渲染名为 test.html 的视图,该视图的全路径 为”/other_path/test.html”,即当参数以”/”开头时将采用绝对路径;
&renderJsp(”test.html”),渲染名为 test.html 的视图,且视图类型为 Jsp。
&renderJson() 将所有通过 Controller.setAttr(String, Object)设置的变量转换成 json 数据并渲染
renderJson(“users”, userList),以”users”为根,仅将 userList 中的数据转换成 json数据并渲染。
renderJson(user) &&将 user 对象转换成 json 数据并渲染
注意:注意:1:IE 不支持 contentType 为 application/json,在 ajax 上传文件完成后返回 json 时 IE 提示下载文件,解决办法是使用:render(new JsonRender(params).forIE())。2:除 renderError 方法以外,在调用 render 系列的方法后程序并不会立即返回,如果需要立即返回需要使用 return 语句。在一个 action 中多次调用 render 方法只有最后一次有效。
5、获取request:getRequest();
6、获取response:getResponse();
阅读(...) 评论()asp.net通过http调用java程序返回的response中数据asp.net中无法获得
通过浏览器访问链接能否正常显示java程序返回的xml数据,但是.net访问后response中没有数据 lenght=-1 这是什么原因呢?百思不得其解啊。
& &估计是 ASP.NET 那端读取的问题,可以先用这个工具类试试 java 能否读到数据,好确定是 ASP.NET 这端的代码有问题:http://git.oschina.net/jfinal/jfinal_weixin/blob/master/src/com/jfinal/weixin/sdk/kit/HttpKit.java
--- 共有 2 条评论 ---
: 这个问题相当奇怪,你可以自定义一个 MyRender extends FreeMarkerRender,然后不 flush来做
我用HttpClient访问是没有问题的,搞了半天才明白源码是io的flush方法搞的,只要flush,asp就接受不到数据了。本来想用FreemarkerXMLRender直接给他返回xml的,结果不行,renderText都不行,最后我是自己获得的流,拼接好xml,设置contentType后write的,不flush,直接关闭就没有问题。最后也不知道为什么flush会导致asp接收不到

我要回帖

更多关于 淘宝卖家怎么添加商品 的文章

 

随机推荐