誰かが JSP ファイル x.jsp にアクセスするたびに、この手順を実行したいと考えています。
JSP ファイル内で Java コード形式を実行することは可能ですが、私は決してお勧めしません。理由を尋ねるかもしれませんが、これはこの投稿でこれまで以上に詳しく文書化されています。
あなたの質問に答えるには、サーブレットを作成する必要があります
@WebServlet("/YourServlet")
public class YourServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public YourServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
new Execute.run();
request.getRequestDispatcher("/WEB-INF/_search.jsp").forward(request, response);
}
}
さらに、webapp のパーミッションを変更する必要があります。このページに記載されています。
これは最も基本的なアプローチであり、最もクリーンなアプローチではないことに注意してください。通常、(実行計画を制御する) Java コードの実行は、サービス内で行われます。(agian) HttpServlet を宣言し、そこでサービスを宣言することで、アプリケーションにサービスを追加できます。
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
new Execute.run();
if (view.equals(request.getPathInfo().substring(1)) {
request.getRequestDispatcher("/WEB-INF/" + view + ".jsp").forward(request, response);
} else {
response.sendRedirect(view);
}
} catch (Exception e) {
throw new ServletException("Executing action failed.", e);
}
}
以下のコメントの意味はわかりませんが、より完全なものにするために、回答に html コードを追加します。実際には、これは次のことを意味します。
送信時に、html はサーブレットへの HTTP-Post を作成する必要があります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<table align="center" border="3">
<tr>
<td><form action='Myactionhandle'><input type="submit" value="submit" name="submit"/></form></td>
</tr>
</table>
</body>
</html>
そして、サーブレットはコードを実行する必要があります。
@WebServlet("/Myactionhandle")
public class YourServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public YourServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
new Execute.run();
request.getRequestDispatcher("/WEB-INF/_search.jsp").forward(request, response);
}
}