[英]How do I write the Java logger Servlet?
我想在我的系統中進行一些登錄,例如用戶操作,並且我知道在小服務中我可以獲得包含所有會話、參數等的請求
所以我想寫Servlet
public class UserActionCheck extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
Map map = request.getParameterMap();
Set keSet = map.entrySet();
for (Iterator itr = keSet.iterator(); itr.hasNext(); ) {
Map.Entry me = (Map.Entry) itr.next();
Object ok = me.getKey();
Object ov = me.getValue();
String[] value = new String[1];
if (ov instanceof String[]) {
value = (String[]) ov;
} else {
value[0] = ov.toString();
}
for (int k = 0; k < value.length; k++) {
System.out.println(ok + "=" + value[k]);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//HttpSession session = request.getSession();
}
}
然后我可以在tomcat控制台中看到參數輸出..但是我得到了空白頁..
似乎頁面在doGet
方法之后停止了..
那么我該如何讓它繼續下去呢?
使用那個RequestDispatcher
?
在doPost
還怎么處理?
為了您的目的,最好的方法是使用Filter
。
示例:
@WebFilter(filterName = "monitoringFilter", urlPatterns = { "/*" })
public class MonitoringFilter implements Filter
{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
{
// Right here do your stuff pretty much like in a servlet
request // ... get information you need
// Process request as normal
chain.doFilter(request,response);
}
@Override
public void init(FilterConfig config) throws ServletException
{
}
@Override
public void destroy()
{
}
}
更多信息:
你問這個問題
所以我應該如何繼續下去?
doGet方法的想法是,它應該寫入響應對象,即應該在瀏覽器中寫入的html(或數據)。
例如你可以寫
PrintWriter out = response.getWriter();
for(int k=0;k<value.length;k++){
out.println(ok+"="+value[k]);
}
看看http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-First-Servlets.html
doPost也可以類似地處理,但通常用於POST的數據-提交HTML表單時調用它。
您應該使用log4j和FileAppender在您的應用程序中實現日志記錄。 像這樣的東西:::
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
class A{
static Log log = LogFactory.getLog(A.class);
void methodA(){
try{
log.info("I am inside A");
} catch(Exception e) {
log.error("error" , e);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.