⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 applicationservlet.java

📁 src版Buffalo最新框架
💻 JAVA
字号:
/*
 * Copyright 2002-2004 the original author or authors.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * $Id: ApplicationServlet.java,v 1.5 2006/10/01 13:58:25 mechiland Exp $
 */

package net.buffalo.web.servlet;

import java.io.IOException;
import java.util.Locale;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.buffalo.request.RequestContext;
import net.buffalo.request.RequestContextUtil;
import net.buffalo.request.RequestWorker;
import net.buffalo.request.ValidationException;
import net.buffalo.service.BuffaloWorker;
import net.buffalo.service.DefaultServiceRepository;
import net.buffalo.service.ServiceRepository;
import net.buffalo.view.ViewWorker;
import net.buffalo.web.RequestUtils;
import net.buffalo.web.upload.UploadWorker;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * Buffalo application Servlet, the central servlet for all the requests.
 * 
 * @author michael
 * @version 1.2
 */
public class ApplicationServlet extends HttpServlet {

	private static final long serialVersionUID = 7531914733078063390L;

	private static final Log LOG = LogFactory.getLog(ApplicationServlet.class);

	private static final String LOCALE_COOKIE_NAME = "net.buffalo.web.locale";

	public String getServletInfo() {
		return "Buffalo Application Gateway Servlet";
	}

	/**
	 * Initialize the service, including the service object.
	 */
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		initServiceRepository();
	}

	/**
	 * initialize the service repository
	 * 
	 */
	protected void initServiceRepository() {
		
		if (getServletContext().getAttribute(ServiceRepository.WEB_CONTEXT_KEY) == null) {
			LOG.info("initialize the service repository");
			ServiceRepository repository = new DefaultServiceRepository(getServletContext());
			getServletContext().setAttribute(ServiceRepository.WEB_CONTEXT_KEY, repository);
		}
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doRequest(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doRequest(request, response);
	}

	protected void doRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		RequestContextUtil.createRequestContext(getServletContext(), request, response);
		String pathInfo = request.getPathInfo();
		
		LOG.debug("request path info: " + pathInfo);
		RequestWorker worker = null;
		if (pathInfo == null || pathInfo.equals("/")) {
			worker = new ViewWorker();
		} else if (pathInfo.startsWith("/view/")) {
			worker = new ViewWorker();
		} else if (pathInfo.startsWith("/buffalo/")) {
			worker = new BuffaloWorker();
		} else if (pathInfo.startsWith("/upload/")) {
			worker = new UploadWorker();
		} else {
			throw new ServletException("Cannot find the request worker!");
		}
		
		try {
			worker.validate(request, response);
		} catch (ValidationException ex) {
			throw new ServletException("Service validation error", ex);
		}
		
		worker.processRequest(request, response);
	}

	protected Locale getLocaleFromRequest()
			throws ServletException {
		Cookie cookie = (Cookie) RequestContext.getContext().getCookie().get(LOCALE_COOKIE_NAME);

		if (cookie != null)
			return RequestUtils.getLocale(cookie.getValue());

		return RequestContext.getContext().getHttpRequest().getLocale();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -