私のアプリケーションにはstruts 1.3が使用されています。すべてのJSPページはコントローラ(アクションクラス)を介して転送されます。しかし、jspページに直接アクセスすると、アクセスできます。これをどうやって防ぐのですか?jspページへの直接アクセスの拒否
15
A
答えて
16
のために良いチュートリアルですs。
1
あなたはフィルタを使用しての.jspページをお願いしてのみ許可するURLを持つ要求を制限することができますを求める要求.doというフィルタをバイパスするか、割り込み要求を、その制限するフィルタを使用するために使用されている
4
urlに.doが含まれていない場合はリクエストしてください。以下はjsp-の位置に関する(WEB-INF/JSPフォルダ内など)WEB-INFフォルダ内のすべてのあなたのjsp-Sを入れて、あなたのマッピングを変更することを忘れていけないのフィルター
2
私は最良の選択肢は、WEB-INFフォルダ内のWebページを配置することだと思う - 彼らは直接アクセスすることはできませんが、その後、あなたのサーブレットであなたのようなもの持つことができる方法:
public class ControllerServlet extends HttpServlet {
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userPath = request.getServletPath();
// if category page is requested
if (userPath.equals("/category")) {
// TODO: Implement category request
// if cart page is requested
} else if (userPath.equals("/viewCart")) {
// TODO: Implement cart page request
userPath = "/cart";
// if checkout page is requested
} else if (userPath.equals("/checkout")) {
// TODO: Implement checkout page request
// if user switches language
} else if (userPath.equals("/chooseLanguage")) {
// TODO: Implement language request
}
// use RequestDispatcher to forward request internally
String url = "/WEB-INF/view" + userPath + ".jsp";
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (Exception ex) {
ex.printStackTrace();
}
}
を撮影者:http://netbeans.org/kb/docs/javaee/ecommerce/page-views-controller.html
+1 - WEB-INF隠蔽が最も一般的に使用される方法です。あなたがドキュメントや例を読んだら、彼らはしばしばこの設定を使います。 – pap