---
# System prepended metadata

title: 在Web-tomcat部屬-運行-訪問
tags: [Java Web-Servlet]

---

# 在Web-tomcat部屬-運行-訪問
###### tags: `Java Web-Servlet`

## Tomcat基本介紹

## 建立步驟
### 步驟一：建立具備web性質的Module
![](https://i.imgur.com/OPCOna7.png)
直接新建時，可能沒有提供選項
![](https://i.imgur.com/UwUiSSz.png)
![](https://i.imgur.com/EFtgkjG.png)
可直接右鍵該Module，選擇"Add Framework Support"，並勾選Web Application，成為web性質的Module
![](https://i.imgur.com/lzzYexd.png)
成為web後，會出現web資料夾-WEB INF-web.xml
web.xml是對web發出指令的重要檔案
 
### 步驟二：完成html頁面
示範程式碼
```htmlembedded=
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <form action="add" method="post">
      名稱：<input type="text" name="fname"/><br/>
      價格：<input type="text" name="price"/><br/>
      庫存：<input type="text" name="fcount"/><br/>
      備註：<input type="text" name="remark"/><br/>
    <input type="submit" value="添加"/><br/>
  </form>
</body>
</html>
```
#### 注意：html檔案務必要放在web資料夾底下，否則無法讀取
![](https://i.imgur.com/mPMjOZB.png)

### 步驟三：建立對應指令的java文件
示範代碼
```java=
public class AddServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {

        //get方式目前不需要設置編碼(基於tomcat8)
        //如果是get請求發送的中文數據，轉碼稍微有點麻煩(tomcat8之前)
//        String fname = request.getParameter("fname");
//        //1.將字符串打散成字節數組
//        byte[] bytes = fname.getBytes("ISO-8859-1");
//        //2.將字符數組按照設定的編碼重新組裝成字符串
//        fname = new String(bytes,"UTF-8");

        //post方式下，設置編碼，防止中文亂碼
        //需要注意的是，設置編碼這一句代碼必須在所有的獲取參數動作之前
        request.setCharacterEncoding("UTF-8");
        String fname = request.getParameter("fname");
        String priceStr = request.getParameter("price");
        Integer price = Integer.parseInt(priceStr);
        String fcountStr = request.getParameter("fcount");
        Integer fcount = Integer.parseInt(fcountStr);
        String remark = request.getParameter("remark");

        FruitDAO fruitDao = new FruitDAOImpl();
        boolean flag = fruitDao.addFruit(new Fruit(0,fname,price,fcount,remark));

        System.out.println(flag ? "添加成功" : "添加失敗！");
    }
}
```

#### 說明：

```xml=
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>AddServlet</servlet-name>
        <servlet-class>com.servlets.AddServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
    <!--
    1.用戶發請求，action = add
    2.項目中，web.xml中找到url-pattern = /add ->第12行
    3.找第11行的 servlet-name = AddServlet
    4.找和servlet-mapping中servlet-name一致的servlet，找到第7行
    5.找第8行的servlet-class ->AddServlet
    6.用戶發送的是post請求(method = post)，因此tomcat會執行AddServlet中的doPost方法
    -->
</web-app>
```
### 步驟四：tomcat的設置

1.在libraries新增mysql的驅動包
![](https://i.imgur.com/MCcPnei.png)
2.先在Project Structure中的Module中，選擇對應的Module，並且在Dependencies添加Tomcat以及mysql的驅動包
![](https://i.imgur.com/GdZ7v0o.png)
3.在Artifacts生成對應Module的Artifacts
![](https://i.imgur.com/TarbuW7.png)
4.到Run/Debug添加對應的Artifacts，可以順便修改下方的context root(網頁連接所使用的名稱)
![](https://i.imgur.com/bNzluOS.png)
5.在URL輸入對應的context root/網頁名稱.html
Application server要設置對應版本的Tomcat
![](https://i.imgur.com/YpT39JO.png)

