欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Jfinal框架的原理和用法

這篇文章主要介紹“Jfinal框架的原理和用法”,在日常操作中,相信很多人在Jfinal框架的原理和用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Jfinal框架的原理和用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)建站,為您提供成都網(wǎng)站建設(shè)公司成都網(wǎng)站制作、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計,對服務成都生料攪拌車等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗。創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報價服務,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進步,是我們永遠的責任!

一、啟動原理

Jfinal是個web框架,依賴于web.xml啟動,如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="mc" version="3.0">
	<filter>
		<filter-name>jfinal</filter-name>
		<filter-class>com.jfinal.core.JFinalFilter</filter-class>
		<init-param>
			<param-name>configClass</param-name>
			<param-value>com.xxx.run.ApiConfig</param-value>
		</init-param>
	</filter>
	<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>

說明:

Jfinal通過過濾器Filter啟動相關(guān)配置,如上:

1、所有的請求都會被過濾器com.jfinal.core.JFinalFilter攔截;

2、JFinalFilter的init方法會由web容器啟動;

3、init方法會根據(jù)init-param中配置的類進行對象初始化,如下完整代碼會獲取param-name為configClass對應的值,即ApiConfig類,然后通過反射得到這個類的相關(guān)內(nèi)容;

核心代碼塊:

public void init(FilterConfig filterConfig) throws ServletException {
		createJFinalConfig(filterConfig.getInitParameter("configClass"));
		
		jfinal.init(jfinalConfig, filterConfig.getServletContext());
		
		String contextPath = filterConfig.getServletContext().getContextPath();
		contextPathLength = (contextPath == null || "/".equals(contextPath) ? 0 : contextPath.length());
		
		constants = Config.getConstants();
		encoding = constants.getEncoding();
		jfinalConfig.afterJFinalStart();
		
		handler = jfinal.getHandler();		// 開始接受請求
	}

JFinalFilter 完整代碼如下:

package com.jfinal.core;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jfinal.config.Constants;
import com.jfinal.config.JFinalConfig;
import com.jfinal.handler.Handler;
import com.jfinal.log.Log;

/**
 * JFinal framework filter
 */
public class JFinalFilter implements Filter {
	
	private Handler handler;
	private String encoding;
	private JFinalConfig jfinalConfig;
	private Constants constants;
	private static final JFinal jfinal = JFinal.me();
	private static Log log;
	private int contextPathLength;
	
	public void init(FilterConfig filterConfig) throws ServletException {
		createJFinalConfig(filterConfig.getInitParameter("configClass"));
		
		jfinal.init(jfinalConfig, filterConfig.getServletContext());
		
		String contextPath = filterConfig.getServletContext().getContextPath();
		contextPathLength = (contextPath == null || "/".equals(contextPath) ? 0 : contextPath.length());
		
		constants = Config.getConstants();
		encoding = constants.getEncoding();
		jfinalConfig.afterJFinalStart();
		
		handler = jfinal.getHandler();		// 開始接受請求
	}
	
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response = (HttpServletResponse)res;
		request.setCharacterEncoding(encoding);
		
		String target = request.getRequestURI();
		if (contextPathLength != 0) {
			target = target.substring(contextPathLength);
		}
		
		boolean[] isHandled = {false};
		try {
			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);
		}
	}
	
	public void destroy() {
		handler = null;		// 停止接受請求
		
		jfinalConfig.beforeJFinalStop();
		jfinal.stopPlugins();
	}
	
	protected void createJFinalConfig(String configClass) {
		if (configClass == null) {
			throw new RuntimeException("Please set configClass parameter of JFinalFilter in web.xml");
		}
		
		Object temp = null;
		try {
			temp = Class.forName(configClass).newInstance();
		} catch (Exception e) {
			throw new RuntimeException("Can not create instance of class: " + configClass, e);
		}
		
		if (temp instanceof JFinalConfig) {
			jfinalConfig = (JFinalConfig)temp;
		} else {
			throw new RuntimeException("Can not create instance of class: " + configClass + ". Please check the config in web.xml");
		}
	}
	
	static void initLog() {
		log = Log.getLog(JFinalFilter.class);
	}
}

二、其它框架集成Jfinal框架

Jfinal框架本質(zhì)上就是web.xml + Lib包;

從功能上看主要分為:

1、處理用戶web請求的lib或類,如ControllerRoutes,configInterceptor,configHandler,啟動端口等;

2、普通的插件,配置等,如configPlugin,loadProp,configConstant等

如果集成不需要使用Jfinal的web相關(guān)功能,則主要根據(jù)第二點選擇即可,對于我們項目的biz,則主要為了使用Record,那么集成ActiveRecordPlugin類即可。

到此,關(guān)于“Jfinal框架的原理和用法”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文題目:Jfinal框架的原理和用法
路徑分享:http://aaarwkj.com/article6/iijjog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)網(wǎng)站營銷、ChatGPT、做網(wǎng)站、響應式網(wǎng)站軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
亚洲成人久久久av一区| 中文字幕人妻久久精品一区| 国产亚洲一区二区三区午夜| 日本特黄特黄录像在线| 精品日韩欧美在线观看91| av在线免费观看青青草原| av小说亚洲激情乱| 97超频在线观看免费| 韩国三级网站在线观看视频 | 亚洲一区二区三区欧美精品| 视频二区国产欧美日韩| 中文字幕日韩欧美资源站| 日本又色又爽又黄又高潮| 国产日产亚洲综合一区| 日本欧美国产污黄在线观看| 国语对白精品视频在线| 91欧美日韩精品在线| 中国成熟女人毛茸茸视频| 国产亚洲欧美久久精品| 久久国产国内精品国语对白| 精品一区二区三区女同| 欧美日韩一区二区三区大片| 日韩欧美精品一区二区三区四区| 色琪琪原网另类欧美日韩| 久久综合伊人欧美精品| 国产高清视频成人在线观看| 91黑丝国产在线播放| 日韩精品中文字幕有码| 国产一级av在线播放| 欧美日本精品在线观看| 欧美日韩国产另类久久| 亚洲视频在线的视频在| 蜜臀久久精品亚洲一区| 亚洲午夜福利理论片在线| av在线高清免费观看| 人妻大乳一区二区三区| 国产av无毛一区二区三区| 91狠狠综合久久精品| 日韩精品一区福利合集| 亚洲国产不卡一区二区三区| 国产精品高清国产三级av|