1.File -> New -> Project
下面的 web.xml 看要不要產生,後面也還可以改
如果要 thymeleaf,就可以勾 thymeleaf,子選項都不用勾
2.產生後,加入 servlet 的 jar 檔
路徑選 tomcat 路徑下的 bin,抓 servlet-api 或整個資料夾都選
3.File -> Project Structure
如果一開始沒有選 web.xml,可在這裡加入
4.新增 Servlet
舊版的 IntelliJ 不一定會取 Create New Servlet,可能是 New Servlet 而已
如果是用 @WebServlet,要注意預設屬性是 name,但大部分是用 urlPatterns
5.Run -> Edit Configurations
Server 活頁標籤 Application server 要選中 tomcat 的路徑
下面還有 After launch,表示啟動後用什麼瀏覽器打開
Http port 寫你想要的 port
Deployment 的紅框部份的 context 是瀏覽器上要用到的路徑,假設寫 /test,那瀏覽器就要打
http://localhost:8080/test/index.html
又如果是寫 /,那就打
http://localhost:8080/index.html
※如果是 社區版,可以在 File >> Settings >> Plugins,搜尋 smart tomcat 來安裝
Deployment Directory 寫 jsp 的資料夾路徑,一定要有路徑,否則啟動不起來,亂指定沒關係,只差在顯示不了 jsp 的畫面而已
.配合 maven 或 gradle 就可啟動伺服器了,但 gradle 加入 servlet 時,用 providedCompile 時,必需再增加 id 'war',如下:
plugins {
id 'java'
id 'war'
}
.社區版也沒有用滑鼠點一點就有 Servlet 可用,只能自己寫了,要對 servlet 熟一點而已
※Thymeleaf
※如果一開始有勾 thymeleaf,且有寫代碼,那啟動伺服器時會報找不到 thymeleaf 的錯,要照這張圖的設定就可以了
※MyServlet.java
@WebServlet("*.do") public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=UTF-8"); //request.getRequestDispatcher("/WEB-INF/templates/welcome.html").forward(request, response); WebContext ctx = new WebContext(request, response, request.getServletContext(), request.getLocale()); ctx.setVariable("now", LocalDateTime.now().toString()); var templateResolver = new ServletContextTemplateResolver(request.getServletContext()); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); TemplateEngine templateEngine = new TemplateEngine(); templateEngine.setTemplateResolver(templateResolver); templateEngine.process("hi", ctx, response.getWriter()); // 找 /WEB-INF/templates/hi.html } }
※hi.html
<!doctype html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Thymeleaf Demo</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <body> <p th:text="#{xxx.ooo}">default text</p> <p>Date : <span th:text="${now}">no data</span></p> </body> </html>
※hi_en.properties
xxx.ooo=Hello! Thymeleaf!git 專案
沒有留言:
張貼留言