第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

關(guān)于servlet中@webservlet的參數(shù)設(shè)置及路徑的疑惑

關(guān)于servlet中@webservlet的參數(shù)設(shè)置及路徑的疑惑

皈依舞 2019-03-14 14:15:16
首先,編譯了3個(gè)文件,為方便起見(jiàn),按順序分別記為A,B,C吧,其中A、c是servlet程序,B是普通java程序之間的關(guān)系是:A調(diào)用B設(shè)置參數(shù),A再轉(zhuǎn)發(fā)給C響應(yīng),由C展現(xiàn)視圖(表述不好,抱歉,書(shū)上說(shuō)是控制器-模型-視圖的一個(gè)流程)編譯生成的*.class文件均在WEB-INF/classes/me/get/feedmo目錄下HelloController.java內(nèi)容如下:package me.get.feedmo;import java.io.*;import javax.servlet.*;import javax.servlet.annotation.*;import javax.servlet.http.*;//@WebServlet("/HelloController") //@WebServlet還需要其它設(shè)置嗎,如果這樣我這邊會(huì)出錯(cuò),所以一直都是配置的web.xml,麻煩不少public class HelloController extends HttpServlet {    private HelloModel model = new HelloModel();           protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String name = request.getParameter("user");        String message = model.doHello(name);        request.setAttribute("message", message);        request.getRequestDispatcher("HelloView").forward(request, response);    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        this.doGet(request, response);    }}HelloModel.java內(nèi)容如下:package me.get.feedmo;import java.util.HashMap;public class HelloModel {    private HashMap<String, String> messages = new HashMap<String, String>();    public HelloModel(){        messages.put("one", "first");        messages.put("two", "second");        messages.put("three", "third");    }    public String doHello(String user){        String message = messages.get(user);        return message + "," + user + "!";    }}HelloView.java內(nèi)容如下:package me.get.feedmo;之后啟動(dòng)tomcat,瀏覽器地址欄輸入(其中feedmo為tomcat的server.xml文件中的Context path)http://localhost/feedmo/do提示404http://localhost/feedmo/it頁(yè)面就單單顯示了null這是什么原因呢,是不是文件在WEB-INF不可見(jiàn)的原因呢?servlet這種問(wèn)題估計(jì)大多數(shù)人都不愿意看的,真不是故意的。。能看到這里真的很謝謝各位啦,望多多指教!:D是自己對(duì)getRequestDispatcher()認(rèn)識(shí)生疏的問(wèn)題,參數(shù)應(yīng)該傳入的是對(duì)應(yīng)的url字符串,而不應(yīng)該是servlet。所以現(xiàn)在訪問(wèn):http://localhost/feedmo/do?user=one就可以得到first,one!的結(jié)果。謝謝好心哥哥們的幫助:P
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

同樣很久沒(méi)看過(guò)原生的Servlet了……

Q:@WebServlet還需要其它設(shè)置嗎,如果這樣我這邊會(huì)出錯(cuò),所以一直都是配置的web.xml,麻煩不少

A:@WebServlet是Servlet 3.0的注解,需要相應(yīng)的tomcat版本支持。你說(shuō)的@WebServlet報(bào)錯(cuò),具體是報(bào)了什么錯(cuò)呢?感覺(jué)你這里寫(xiě)的@WebServlet是有問(wèn)題的,可以看一下這里;

Q:http://localhost/feedmo/do 提示404

A:報(bào)404是因?yàn)槟愦a里實(shí)現(xiàn)了請(qǐng)求轉(zhuǎn)發(fā),而你看一下getRequestDispatcher參數(shù)里的形參名稱就知道,這里應(yīng)該傳入一個(gè)url字符串,而不是servlet的名稱,你這里的代碼實(shí)現(xiàn)相當(dāng)于當(dāng)輸入http://localhost/feedmo/do時(shí),后端將請(qǐng)求轉(zhuǎn)發(fā)至http://localhost/feedmo/do/HelloView,所以報(bào)404;

Q:http://localhost/feedmo/it 頁(yè)面就單單顯示了null

A:你的GET請(qǐng)求沒(méi)有帶上url參數(shù)和屬性,所以HelloView#doGet里的usernull,而這一句String message = (String)request.getAttribute("message");感覺(jué)應(yīng)該會(huì)拋出NPE異常,因?yàn)?code>request.getAttribute("message")應(yīng)該為null,對(duì)null進(jìn)行強(qiáng)制轉(zhuǎn)型會(huì)觸發(fā)NPE異常。假設(shè)沒(méi)有觸發(fā)NPE異常,messagenull,則把usermessage填充至html模板里,就會(huì)變成以下代碼:

<html>

  <head>

    <meta http-equiv='Content-Type'

    content='text/html; charset=UTF-8'>

    <title>null</title>

  </head>

  <body>

    <h1>null</h1>

  </body>

</html>

所以,頁(yè)面上的輸出應(yīng)該就是一個(gè)大寫(xiě)的


null

而且瀏覽器的標(biāo)簽頁(yè)標(biāo)題也是顯示null。


查看完整回答
反對(duì) 回復(fù) 2019-04-21
  • 2 回答
  • 0 關(guān)注
  • 1189 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)