67,512
社区成员
发帖
与我相关
我的任务
分享
/**
* 跳转到index页面
*/
public void doGet(HttpServletRequest request, HttpServletResponse response){
RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
try {
dispatcher.forward(request, response);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response) {
request.getSession().invalidate();
try {
response.sendRedirect("/sjdRtc");
return;
} catch (IOException e) {
e.printStackTrace();
}
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
HttpSession session = request.getSession();
request.setCharacterEncoding(encoding);
//response.setContentType("text/html;charset="+encoding+";");
response.setHeader("Cache-Control","no-cache");
response.setCharacterEncoding(encoding);
LoginUser userSession = (LoginUser)session.getAttribute("userInfo");
if (userSession != null) {
//重新设值session
session.setAttribute("userInfo", userSession);
}
filterChain.doFilter(req, res);
}
//创建输出流
ImageOutputStream outputStream = ImageIO.createImageOutputStream(out);
//将构建好的图片输出流写入到页面中
writer.setOutput(outputStream);
writer.write(null, iioImage, param);
貌似是这里的问题?没有关闭流!
现在已经加上了:
outputStream.flush();
outputStream.close();
测试中
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.sjd.code.web.BaseServlet.toMethod(BaseServlet.java:53)
at com.sjd.code.web.index.IndexServlet.doPost(IndexServlet.java:32)
at com.sjd.code.web.index.IndexServlet.doGet(IndexServlet.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.sjd.code.util.MyFilter.doFilter(MyFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2441)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2430)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalStateException: Cannot forward after response has been committed
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:348)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
at com.sjd.code.web.index.IndexServlet.toIndex(IndexServlet.java:45)
... 34 more
Servlet是这样弄的,一个BaseServlet里面没有post跟get方法:
public class BaseServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -2977087939978885197L;
public void toJson(Map<String, Object> map,HttpServletRequest request, HttpServletResponse response){
PrintWriter out = null;
try {
out = response.getWriter();
Gson gson = new Gson();
out.print(gson.toJson(map));
} catch (IOException e) {
e.printStackTrace();
}finally{
if(out!=null){
out.flush();
out.close();
}
}
return;
}
public void toMethod(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String tag = request.getParameter("method");
try {
Method method = this.getClass().getDeclaredMethod(tag, new Class[] {
HttpServletRequest.class, HttpServletResponse.class });
method.invoke(this, new Object[] { request, response });
} catch (Exception e) {
e.printStackTrace();
}
}
public BaseServlet() {
super();
}
}
然后其它Servlet就继承BaseServlet:
public class UserServlet extends BaseServlet {
public UserServlet(){
super();
}
/**
*
*/
private static final long serialVersionUID = 5178837037745757373L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
toMethod(request, response);
}
}