0

リファレンス: HTML フォーム、php、およびアポストロフィ

HTML フォームからサーブレットにデータを渡して処理しようとしています。ただし、テキスト入力でアポストロフィが失われることに気付きました。これがクライアント側の処理エラーなのか、サーバー側の処理エラーなのかわかりませんが、上記のリファレンスを参照すると、サーブレット側で何らかの処理を行う必要があると思いますか? 上記に代わるサーブレットを探してみましたが、見つかりませんでした。

コード スニペットは次のとおりです。

HTML 形式:

<form method="post" action="CreateThreadServlet">
                        <b>Title</b><br>
                        <input type="text" name="title" size="60%" placeholder="Enter your title here"/><br>

                        <br><b>Tags</b><br>
                        <input type="text" name="tags" placeholder="Additional Tags: comma separated, e.g. Gamification, Java" size="60%" /><br>  

                        <br><b>Details</b><br>
                        <textarea name="content" style="width:100%;height:50%"></textarea>
                        <input type="hidden" name="nick" value=<%=nick%>>
                        <input type="hidden" name="userid" value=<%=userid%>>
                        <button type="button" style='float: right;' onClick="closeDimmer()">Cancel</button>
                        <input type="submit" name="Submit" value="Submit" text-align='center' style='float: right;'>

                    </form>

これは、フォームを処理するサーブレット コードです。

String userid = req.getParameter("userid");
    String nick = req.getParameter("nick");
    String title = null; //tried using the URLDecoder, doesn't work
    try {
        title = URLDecoder.decode(req.getParameter("title"), "UTF-8");
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(CreateThreadServlet.class.getName()).log(Level.SEVERE, null, ex);
    }
    String tags = req.getParameter("tags");
    String[] tagStr = tags.split(",");
    String[] addTags = req.getParameterValues("addTags");

初心者を助けてください。

4

1 に答える 1

0

このリンクが説明しているように、フィルターを簡単に構成できます

<filter>
    <filter-name>HitCounterFilter </filter-name>
    <filter-class>
        net.my.filters.HitCounterFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>HitCounterFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

これを持っている:

public final class HitCounterFilter implements Filter {
   private FilterConfig filterConfig = null;
   public void init(FilterConfig filterConfig) 
      throws ServletException {
      this.filterConfig = filterConfig;
   }
   public void destroy() {
      this.filterConfig = null;
   }
   public void doFilter(ServletRequest request,
      ServletResponse response, FilterChain chain) 
      throws IOException, ServletException {
     if (request.getCharacterEncoding() == null) {
        request.setCharacterEncoding("UTF-8");
     }
     chain.doFilter(request, wrapper);
   }
}

そのため、 UTF-8エンコーディングを強制します。

于 2013-06-28T13:32:49.303 に答える