新建 IDEA 项目
新建一个普通 Java 项目,本教程的 JDK 版本选择 1.8
如果没有安装 JDK,可以在下拉菜单中选择合适的版本下载到指定位置(记住这个下载路径)。
完成之后,点击“创建”即可打开刚刚新建的项目。
安装 Tomcat 8.5
下载 apache-tomcat-8.5.96.zip 并解压至合适位置。
进入 bin
目录,双击运行 startup.bat
,如果闪退,可能是未配置 JDK 系统环境变量,缺少 JAVA_HOME
环境变量。
若终端输出乱码,可进入 conf
目录,编辑 logging.properties
文件,将 28~47 行的 encoding
全部修改为 GBK
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = GBK
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.encoding = GBK
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.encoding = GBK
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.encoding = GBK
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
看到这两行后,打开浏览器,访问网址 http://127.0.0.1:8080
若浏览器出现以下错误,提示“消息 java.lang.IllegalStateException: 无输出目录”,原因可能是权限不够。
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 java.lang.IllegalStateException: 无输出目录
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
org.apache.jasper.JasperException: java.lang.IllegalStateException: 无输出目录
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:618)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:424)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:583)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
根本原因。
java.lang.IllegalStateException: 无输出目录
org.apache.jasper.JspCompilationContext.createOutputDir(JspCompilationContext.java:689)
org.apache.jasper.JspCompilationContext.getOutputDir(JspCompilationContext.java:204)
org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:537)
org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:464)
org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:430)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:590)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:583)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
Apache Tomcat/8.5.96
右键 Tomcat 所在文件夹,在属性中如下图所示,为 Users 添加完全控制权限。
必须双击运行 shutdown.bat
退出,再次双击运行 startup.bat
以重新启动。成功!
在 IDEA 项目中配置 Tomcat
单击选中刚刚创建好的项目 “tomcat”,双击 Shift,搜索 frame
,点击添加框架支持。
勾选“web应用程序”,勾选“创建 web.xml”,点击 OK
在 /web/WEB-INF
目录下创建 classes
和 lib
目录。
打开项目结构
设置输出路径为刚才创建的 classes
在项目依赖中,添加刚才创建的 lib
目录
继续导入 Tomcat 安装目录下 lib 目录的 JSP 和 Servlet 包到项目中。
按住 ctrl
键不放,鼠标单击同时选中 jsp-api.jar
和 servlet-api.jar
两个包。
点击确定保存。
点击顶部的“当前文件”,编辑配置,配置 Tomcat
选择 Tomcat 所在目录
可在此设置“应用程序上下文”。
成功运行!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。