基本搭建
- maven依赖
//主要两个依赖,JFinal&Jetty
<!-- https://mvnrepository.com/artifact/com.jfinal/jfinal -->
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.jfinal/jetty-server -->
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.8</version>
<scope>compile</scope>
</dependency>
- web.xml的配置
//1.添加filter 2.添加jfinal的配置类
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<!--初始化jfinal的config类-->
<init-param>
<param-name>configClass</param-name>
<param-value>com.zl.server.ScreenConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 启动方式(main)
// idea 不支持热加载的方式
JFinal.start("src/main/webapp",80,"/");
- config类的配置
ScreenConfig类,继承JFinalConfig类。目前只配置简单的路由信息,将前后端请求打通。
在configRoute方法当中,配置简单路由信息.
public class ScreenConfig extends JFinalConfig {
@Override
public void configConstant(Constants constants) {
//设置为开发模式
constants.setDevMode(true);
}
@Override
public void configRoute(Routes routes) {
//配置路由信息 带 / 为绝对路径
routes.add("/hello",HelloController.class);
}
@Override
public void configEngine(Engine engine) {
}
@Override
public void configPlugin(Plugins plugins) {
}
@Override
public void configInterceptor(Interceptors interceptors) {
}
@Override
public void configHandler(Handlers handlers) {
}
}
- 创建controller
方式比较简单,只需要将特定的*Controller类继承基类Controller即可。
public class HelloController extends Controller {
public void index(){
renderText("first test");
}
}
ctrl+F5 重启启动服务器,浏览器输入localhost/hello (注意我在路由配置的绝对路径的方式),至此前后端数据流已经打通。
异常信息
- server启动
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Connector
at com.jfinal.core.JFinal.start(JFinal.java:168)
at com.zl.server.StartServer.main(StartServer.java:15)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.Connector
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
解决方案
//pom.xml文件添加依赖 备注:scope的value值complie,官方库里面提供的值为provided
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.8</version>
<scope>compile</scope>
</dependency>
```