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

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://www.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)化排名
高清亚洲一区二区三区| 熟女精品国产一区二区三区| 视频一区日本视频二区| 国产精品久久99一区| 国产成人国产精品国产三级| 亚洲成人av毛片在线观看| 日韩欧美一区二区在线播放| 国产亚洲欧美精品在线观看| 日韩一日韩一区二区三电影在线观看| 女同三人按摩高潮喷出| 中文成人无字幕乱码精品| 麻豆精品人妻中文在线| 视频一二区免费在线观看| 中文字幕在线不卡精品视频| 国产在线精品91系列| 美女午夜精品国产福利| 国产男女免费操作视频| 亚洲欧美不卡一区二区| 91九色视频免费观看| 天堂网一区二区三区四区| 亚洲天堂av一区二区在线| 色一区欧美一区亚洲一区| 麻豆精品情欲人妻一区| 亚洲av天堂在线播放| 国产丝袜在线精品丝袜不卡| 麻豆国产97在线精品一区| 91啪在线观看91色| 视频一区二区三区不卡| 人妻有码中文字幕在线| 亚洲毛片高清一区二区三区| 欧美成人黄片免费播放| 人妻日韩字幕一区二区| 日本一二三四卡久久精品| 国产精品久久久久久老熟女| 久久久久四虎国产精品| 婷婷激情综合亚洲五月色| 亚洲欧美国产成人在线| 国产一区二区欧美日本| av免费观看一区二区三区| 国产日韩精品专区一区| 久久综合视频大片视频|