---
# System prepended metadata

title: JAVA程式筆記-Servlet-2
tags: [JAVA程式筆記]

---

---
title:  JAVA程式筆記-Servlet-2
tags: JAVA程式筆記
---
一般正常的WEB-INF下應該還要有CLASSES+LIB檔(在SPRING實作時也是長這樣的)，但是在IDEA裡面似乎剛創建沒有(要用手動?)
+-----WEB-INF
|　　　+---classes
|　　　+---lib
+---index.jsp
然後TOMCAT自己在外面按(用資料夾官網開)和在軟體(例如IDEA裡面)不要前後按，不然會出現錯誤，一為localhost只有一個會打架(我之前就是發現不能一直按就越不能)

---
這裡要開始解決的是A跳到下一個B或C，所以要先建一個PORT文件(HTML檔)(這裡要注意的是資料夾放在D槽或C槽裡的要再建一個不然會被覆蓋洗過去~因為現在是一個完整的檔案，不再只是一個一個的CLASS)
在.xml裡再加入現在檔案名稱的(其他都跟Servlet-1一樣)
<servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/MyServlet</url-pattern>
    </servlet-mapping>

![](https://i.imgur.com/b2X7OJK.jpg)
---

+<html lang="en">改掉變成 <html>因為現在要打到中文(做建表單的動作~)
加入HTML語法:<from></from>
<from method="post" action="/MyServlet" >
要做的是對應到XML檔的
<url-pattern>/MyServlet</url-pattern>的動作
其實就是網址~只是似乎大家都講URL
![](https://i.imgur.com/ClavGwZ.jpg)
---
加入HTML語法:<input>
這裡也是國民題~每本書都會寫到的建名字+登入
<input name="name"><input type="submit">
![](https://i.imgur.com/6qnVApb.jpg)

然後運行是按test.html(這個也是一個雷~因為運行錯了就不會動)

下一個就是再回到KEY網址的雷(如果一直出現404就是又要回到Servlet-1)
的RUN的TOMCAT去檢查~(這個就真的是靠練習去破繭了~)
![](https://i.imgur.com/DAa7RP2.jpg)

---
新增/改寫doPost程式碼的內容(上一篇沒填)-這裡沒寫表格會跳不過去
(目前還是卡在這裡~怪)
找不到錯誤:
先把目前的web.xml-https://gist.github.com/jzs2home/07a3114521fc3da97c92e6d6ef881df1
test.html.-https://gist.github.com/jzs2home/0456d1abf9d099dacf29a640da16ee78

MyServlet.java檔-
https://gist.github.com/jzs2home/490906c3e5374e4a2c015e338b0c29ca
程式碼COPY下來~(看看又是哪裡錯了..應該是TOMCAT又擋了~)

---
現在的http://localhost:9999/MyServlet希望跳轉出來的是KEY出的名字
所以就要再新增 System.out.printf(name);

原來的顯示中文的response.setContentType("text/html;charset=utf-8");
要加輸入的中文的
 request.setCharacterEncoding("utf-8");
 
下一個就是再回到KEY網址的雷 (時常遇到是說占用URL，我試著關掉重開~)
再回頭來想想~因為之後用service方法也可以做到
405是禁止訪問錯誤

---
前面表格會跳不過去聽說service方法也可以做到
![](https://i.imgur.com/tpQB5Vp.jpg)

(這本書是我第一次參考的書~)
倒入@Override
![](https://i.imgur.com/aXLs73U.png)

![](https://i.imgur.com/NmYSame.png)
![](https://i.imgur.com/NfcUjuX.png)
自然生成
@Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        super.service(req, res);
    }


裡面有一些自然生成的語法要註解掉super.service(req,res這句)+dopost+doget，不然無法做出
HttpServletRequest request =(HttpServletRequest) req;
HttpServletResponse response  =(HttpServletResponse) res;

發現是一直出現1099被占用(果然又是TOMCAT問題)https://blog.csdn.net/winy_lm/article/details/52095615

詭異死了 一直卡在無法跳轉的地方~
後來有用手動KEY-http://localhost:9999/MyServlet
-發現顯示500有寫JAVA:17的地方錯誤

修一修也是有發現變成是400的錯誤~也有發現別人也碰到一樣的問題
或許改成JSP的寫法就解決了?
因為看人似乎是在HTML的地方修改~不過其實學習Servlet也是為了讓SPRING更了解~在JSP的地方就沒有HTML了 或許這個問題就修掉了?

寫過Servlet的朋友應該知道，Servlet的最大缺點就是在Servlet類中編寫大量繁雜的HTML代碼，使得Java代碼與HTML代碼糅雜在一起，所以JSP應運而生。

原文網址：https://kknews.cc/code/kmkykgv.html