JavaWeb部署
JavaWeb 后台(JAVA程序)部署
路由配置
必须实现 spark.servlet.SparkApplication,并且所有路由在
init()方法中定义,否者部署时会报不是 Servlet 异常,具体路由
定义可以参考 sparkjava
public class Application implements SparkApplication {
    @Override
    public void init() {
        get("/hello", (req, res) -> "Hello World");
        get("/hello/:name", (request, response) -> {
            return "Hello: " + request.params(":name");
        });
    }
WEB配置文件
在项目目录下创建 WEB-INF/web.xml,也可以在其他位置指定此文件(注意此文件的路径,后续需要用到),文件
内容如下:
<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"
	version="3.0">
		<filter>
	    <filter-name>SparkFilter</filter-name>
	    <filter-class>spark.servlet.SparkFilter</filter-class>
	    <init-param>
	        <param-name>applicationClass</param-name>
	        <!-- 此处是路由配置的完整路径名称,此程序配置如下 -->
	        <param-value>teclan.web.Application</param-value>
	    </init-param>
	</filter>
	<filter-mapping>
	    <filter-name>SparkFilter</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>
项目配置
以Maven项目为例,pom.xml配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>teclan.web</groupId>
	<artifactId>teclan-web</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<!-- 这里指定打包成 war 包 -->
	<packaging>war</packaging>
	<name>teclan-web</name>
	<url>http://maven.apache.org</url>
	<dependencies>
	   <!-- 这里添加项目的依赖 -->
		<dependency>
			<groupId>com.sparkjava</groupId>
			<artifactId>spark-core</artifactId>
			<version>2.5</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.3</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
				   <!-- 这里指定WEB配置文件,就是上一步的配置文件路径 -->
					<webXml>WEB-INF\web.xml</webXml>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
打包
执行以下命令打包,如果没有错误,在target下就会生成我们的 war 包,为后续使用方便,
将war包改成一个简短的名字,例如 teclan.war。
mvn package -Dmaven.test.skip
tomcat 部署
将 teclan.war 包复制到 tomcat 的 webapps 目录下,将原来的其他的东西全部删除, 如果在 linxu 下,在 tomcat 目录下执行
chmod +x bin/*sh
授予 bin 目录下的脚本执行权限,然后执行
./bin/startup.sh
即可启动 tomcat ,对于本示例,访问 http://localhost:8080/teclan/hello 即可映射到项目定义的 /hello 路由,返回 “Hello World”, 可以执行
tail -f logs/catalina.out
查看 tomcat实时日志 访问的路由结构为: host:port/war-name/you-route 如果需要更改端口,更改 conf/server.xml中以下片段的端口部分即可```
更改端口后可能需要 root 权限方可启动
### jetty 部署
将 teclan.war 包复制到 jetty 的 webapps 目录下,将原来的其他的东西全部删除,
如果在 linxu 下,在 jetty 目录下执行
java -jar start.jar
即可启动 jetty ,对于本示例,访问
http://localhost:8080/teclan/hello
即可映射到项目定义的 /hello 路由,返回 "Hello World"
如果需要更改端口,在 jetty/start.init 中添加
jetty.http.port=更改后的端口 ``` 访问的路由结构为: host:port/war-name/you-route
更改端口后可能需要 root 权限方可启动