2016-04-04 7 views
0

私はJavaを使い慣れていてTomcatを使っています。JspページがHttpsとHttpで開きます

私はこれだけのようになりますTomcatのdirectory.Andの変化のserver.xmlファイルに変更を行っている。このリンクに source

を使用して、HTTPS上で実行するようにTomcatを設定しています。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" 
      maxThreads="150" SSLEnabled="true" scheme="https" secure="true" 
      keystoreFile="C:\Users\sanjithkumar017\Desktop\myKey.keystore" keystorePass="qwerty" 
      clientAuth="false" sslProtocol="TLS" /> 

です。その後、https://localhost:8443にアクセスできました。

プロジェクトのwarファイル(mserv)を作成し、tomcatのwebappsフォルダに入れました。

問題は私がURLを打つときhttps://localhost:8443/mserv/dis.jsp私は応答を得る(私はそれが動作することを意味する)。また、私が試してみるときhttp://localhost:8080/mserv/dis.jspうまく動作します。

これは、このように動作するはずです.JSPページをhttpsでのみ実行します。

そして私が次にやったのは、私のプロジェクトのweb.xmlにweb.xmlファイルを追加したものです(私のプロジェクトでhttpで動くJSPページがいくつか必要です)。web.xmlファイルはこのように見えます。

<security-constraint> 
<web-resource-collection> 
    <web-resource-name>secured page</web-resource-name> 
    <url-pattern>/mserv/dis.jsp</url-pattern> 
    <url-pattern>/mserv/index.jsp</url-pattern> 
    <url-pattern>/mserv/pcr.jsp</url-pattern> 
</web-resource-collection> 
<user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
</user-data-constraint> 

それでは、私は今、期待していのみのページが(アプリケーションのweb.xml)上記のことで、まだhttps.Butにアクセスできる必要があり、私は両方のHTTPを使用して、すべてのページにアクセスすることができていますおよびhttps。

httpsだけを使用してページにアクセスしたいと考えています。

私は間違っています。助けてください。

JDK :: jdk1.7.0_79

のtomcat :: apacheの-tomcatの-7.0.67

+0

を適用する必要のあるURLパターンを指定し、web.xmlに

import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletResponse; public class HttpsFilter implements Filter { /** * Default constructor. */ public HttpsFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here HttpServletResponse resp = (HttpServletResponse) response; if(!request.isSecure()) { /* Here you can redirect to error page or do permanent redirection using resp object */ } // pass the request along the filter chain chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } } 

。後でコードを投稿できるかどうかがわかります。 –

+0

ああ、してください.. –

答えて

0

プロジェクトでフィルタを追加HttpsFilterを言うとするかどうか要求使用してHTTPS場合やないを見つけるために、リクエストオブジェクトを使用しますisSecure()メソッド。次のコードは次のとおりです。このフィルタは、カスタムサーブレットフィルタやTomcatのバルブを記述する必要があります

<filter> 
    <filter-name>httpsFilter</filter-name> 
    <filter-class>HttpsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>httpsFilter</filter-name> 
    <url-pattern>/mserv/dis.jsp</url-pattern> 
    <url-pattern>/mserv/index.jsp</url-pattern> 
    <url-pattern>/mserv/pcr.jsp</url-pattern> 
</filter-mapping> 
関連する問題