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

📄 controlservlet.java

📁 简易的java问答系统
💻 JAVA
字号:
package cn.netjava.servlet;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

import cn.netjava.action.Action;
import cn.netjava.factory.ActionFactory;

/**
 * 系统控制器实现
 */
public class ControlServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		try {
			request.setCharacterEncoding("GB18030");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		try {
			// 1.解析请求中的命令名
			String actionName = getActionName(request);

			// 2.根据请求的命令名调用工厂对象创建命令处理对象
			// 根据请求的动作名,得到控制器servlet中配置的Action实现类名字
			String actionClassName = this.getInitParameter(actionName);
			Action action = ActionFactory.getIns().getAction(actionClassName);
			
			// 3.调用命令对象处理请求和应答对象,返回目标路径名
			String url = action.execute(request, response);

			// 4.本控制器将请求和应答转发至目标路径名
			if ( null != url) {
				getServletContext().getRequestDispatcher(url).forward(request, response);
			}
		} catch (Exception e) {
			request.getRequestDispatcher("/error.jsp").forward(request, response);
			e.printStackTrace();
		}
	}

	// 得到请求的命令名字:解析出*.netjava请求中*所指代的字符串,即动作名字
	private String getActionName(HttpServletRequest request) {
		String path = request.getServletPath();
		return path.substring(1, path.lastIndexOf("."));
	}

}

⌨️ 快捷键说明

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