0

次のコードで getParameter がオブジェクトを返し、それを文字列にキャストする必要があると言われた理由を理解するのに本当に苦労していますか? String timeTaken で、Type mismatch: cannot convert from void to String というエラーが表示されます。エラーの原因、期間の長いデータ型、またはユーザーの文字列データ型について混乱していますか?

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    long t0 = System.currentTimeMillis();
    // pass the request along the filter chain
    chain.doFilter(request, response);
    long t1 = System.currentTimeMillis();
    long duration = t1 - t0;
    String user = request.getParameter("userName");

    String timeTaken = System.out.println("<HTML><BODY><P>Request from " + user + " at 10.10.1.123 took " + duration + "ms </P></BODY></HTML>");

    context.log(timeTaken);
}

前もって感謝します。

4

1 に答える 1

1

System.out.println何も返さず、値をコンソールに出力するだけです。存在しない戻り値を使用して timeTaken に保存しようとすると、エラー メッセージが表示されます。

おそらく、文字列を timeTaken に割り当てたいだけです。

String timeTaken = "<HTML><BODY><P>Request from " + user + 
     " at 10.10.1.123 took " + duration + "ms </P></BODY></HTML>"; 

文字列も出力したい場合は、次の行にある可能性があります。

System.out.println(timeTaken);
于 2013-05-04T08:26:24.613 に答える