標籤:let 環境 book add pat apache map standard 項目
Tomcat Embedded 開發人員無需搭建Tomcat的環境就可以使用內嵌式Tomcat進行開發,減少搭建J2EE容器環境的時間和開發時容器頻繁啟動所花時間,提高開發的效率
使用Maven建立項目需要添加一下幾個包:
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>8.5.19</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.5.19</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>8.5.19</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>8.5.19</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jasper</artifactId> <version>8.5.19</version> </dependency>
先定義一個簡單的HttpServlet,代碼如下:
public class HomeServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("request scheme: " + req.getParameter("name")); resp.getWriter().print("hello tomcat 陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建陸建"); } }
返回一串字元。
編寫外掛程式啟動:
public class EmbeddedServer { static final int port = 9080; static final String docBase = "target/tomcat"; public static void main(String[] args) { Tomcat tomcat = new Tomcat(); tomcat.setPort(port); tomcat.setBaseDir(docBase); tomcat.getHost().setAutoDeploy(false); tomcat.getEngine(); String contextPath = "/book"; Connector connector = tomcat.getConnector(); connector.setURIEncoding("UTF-8"); connector.setUseBodyEncodingForURI(true); tomcat.setConnector(connector); StandardContext context = new StandardContext(); context.setPath(contextPath); context.addLifecycleListener(new FixContextListener()); tomcat.getHost().addChild(context); tomcat.addServlet(contextPath, "homeServlet", new HomeServlet()); context.addServletMappingDecoded("/home", "homeServlet"); try { tomcat.start(); } catch (LifecycleException e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } tomcat.getServer().await(); }}
如需添加過濾器:
Filter代碼:
public class CORSFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse res, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletResponse response = (HttpServletResponse) res; response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Allow-Credentials", "true"); response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.addHeader("Access-Control-Max-Age", "3600"); response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With,DEVICE_ID,accept,content-type"); } @Override public void destroy() { // TODO Auto-generated method stub }}
在啟動外掛程式中添加代碼:
FilterDef def = new FilterDef(); def.setFilter(new CORSFilter()); def.setFilterName("corsFileter"); FilterMap defMap = new FilterMap(); defMap.setFilterName("corsFileter"); defMap.addURLPattern("*"); context.addFilterDef(def); context.addFilterMap(defMap);
Tomcat 外掛程式啟動 Web程式