HTTP状态500 - java.lang.IllegalStateException:已为此响应调用了getOutputStream()

时间:2017-03-01 13:10:51

标签: java spring jsp

我在运行JSP时遇到Tomcat错误。我知道错误是什么我只是不知道为什么我得到它:

`

    SEVERE: Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
        at org.apache.catalina.connector.Response.getWriter(Response.java:662)
        at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:213)
        at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:104)
        at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:104)
        at org.springframework.security.web.context.OnCommittedResponseWrapper.getWriter(OnCommittedResponseWrapper.java:133)
        at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.getWriter(SaveContextOnUpdateOrErrorResponseWrapper.java:40)
        at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
        at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
        at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:336)

at java.io.Writer.write(Writer.java:157)
at org.apache.jsp.WEB_002dINF.views.error_jsp._jspx_meth_c_005fforEach_005f0(error_jsp.java:155)
at org.apache.jsp.WEB_002dINF.views.error_jsp._jspService(error_jsp.java:111)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
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 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:747)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:410)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1243)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
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 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:205)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
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:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

我的控制器是

    package com.tappingpotentials.sms.admin.school.web.controller;

import java.util.List;
import java.util.Map;

import javax.validation.Valid;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.tappingpotentials.sms.admin.school.service.dto.DailyProxy;
import com.tappingpotentials.sms.admin.school.service.dto.DailyProxyResource;
import com.tappingpotentials.sms.admin.school.service.dto.DataTableRequest;
import com.tappingpotentials.sms.admin.school.service.dto.DataTableResponse;
import com.tappingpotentials.sms.admin.school.service.dto.Status;
import com.tappingpotentials.sms.admin.school.service.dto.TeacherResource;
import com.tappingpotentials.sms.admin.school.web.utils.DataTableUtils;
import com.tappingpotentials.sms.domain.SmsTeacherProxy;

@Controller
@RequestMapping(value="/teachers")
public class DailyProxyController extends AbstractSchoolController{
    private static Logger logger = LoggerFactory.getLogger(DailyProxyController.class);

    @RequestMapping(value = "/{proxyTeacherId}/{teacherId}/dailyProxyClassrooms", method = RequestMethod.GET, produces="application/json")
    @ResponseBody
    public DataTableResponse<DailyProxyResource> getClassroomsOfDailyProxyTeacher(@PathVariable("proxyTeacherId") Long proxyTeacherId,@PathVariable("teacherId") Long teacherId) {
        List<DailyProxyResource> classroomss = classroomService.findClassroomOfTeacherFromDailyProxy(proxyTeacherId,teacherId);
        DataTableResponse<DailyProxyResource> response = DataTableUtils.createDatatableResponse(classroomss);
        return response;
    }

    @RequestMapping(value = "/{teacherId}/dailyProxyTeachers", method = RequestMethod.GET, produces="application/json")
    @ResponseBody
    public DataTableResponse<DailyProxyResource> getDailyProxyTeacher(@PathVariable("teacherId") Long teacherId) {
        List<DailyProxyResource> teacherss = teacherService.findTeacherFromDailyProxy(teacherId);
        DataTableResponse<DailyProxyResource> response = DataTableUtils.createDatatableResponse(teacherss);
        return response;
    }

    @RequestMapping(value = "/viewDailyProxy", method=RequestMethod.GET)
    public ModelAndView dailyProxy(){
        logger.info("Inside daily proxy view");
        ModelAndView mv = new ModelAndView("admin/teacher/dailyproxy");
        return mv;      
    }

    @RequestMapping(value="/proxyDailyList", method=RequestMethod.GET, produces="application/json")
    @ResponseBody
    public DataTableResponse<DailyProxyResource> dailyProxyList(@RequestParam Map<String, String> params){
        logger.info("Proxy list rest api"+ params);
        int total = teacherService.countDailyProxy().intValue();
        DataTableRequest dtRequests = DataTableUtils.createDataDataRequest(params, "teacher");
        List<DailyProxyResource> proxiess = teacherService.getDailyProxy();

        DataTableResponse<DailyProxyResource> response = DataTableUtils.createDatatableResponse(proxiess, total, total, dtRequests);
        return response;
    }

    @RequestMapping(value = "/dailyProxy/{proxyId}/view", method = RequestMethod.GET)
    public ModelAndView viewDailyProxy(@PathVariable("proxyId") Long proxyId) {
        logger.info("Daily Proxy Of School View");
        ModelAndView mv = new ModelAndView("admin/teacher/daily-proxy");
        SmsTeacherProxy dailyProxy = teacherService.findProxy(proxyId);
        mv.addObject("teachers", teacherService.getTeachers());
        mv.addObject("classrooms", classroomService.findClassroomsOfTeacher(dailyProxy.getTeacherId().getId()));
        DailyProxy sp = new DailyProxy(dailyProxy);
        sp.setTeacherId(dailyProxy.getTeacherId().getId());
        sp.setClassroomId(dailyProxy.getClassroomId().getId());
        sp.setProxyTeacher(dailyProxy.getProxyTeacher().getId());
        mv.addObject("readOnly", Boolean.TRUE);
        mv.addObject("proxy", sp);
        return mv;
    }

    @RequestMapping(value = "/dailyProxies/{proxyId}/edit", method = RequestMethod.GET)
    public ModelAndView editDailyProxy(@PathVariable("proxyId") Long proxyId) {
        logger.info("Daily Proxy School Edit");
        ModelAndView mv = new ModelAndView("admin/teacher/daily-proxy");
        SmsTeacherProxy dailyProxy = teacherService.findProxy(proxyId);
        mv.addObject("teachers", teacherService.getTeachers());
        mv.addObject("classrooms", classroomService.findClassroomsOfTeacher(dailyProxy.getTeacherId().getId()));
        DailyProxy sp = new DailyProxy(dailyProxy);
        sp.setTeacherId(dailyProxy.getTeacherId().getId());
        sp.setClassroomId(dailyProxy.getClassroomId().getId());
        sp.setProxyTeacher(dailyProxy.getProxyTeacher().getId());
        mv.addObject("proxy", sp);
        return mv;
    }

    @RequestMapping(value = "/dailyProxies/{proxyId}/edit", method = RequestMethod.POST)
    public ModelAndView editDailyProxyPost(@Valid DailyProxy dailyProxy, RedirectAttributes attr) {
        logger.info("Event Of School Edit POST");
        teacherService.saveDailyProxy(dailyProxy);
        ModelAndView mv = new ModelAndView("redirect:/teachers/viewDailyProxy");
        attr.addFlashAttribute("note", addNote(Status.success, "Proxy updated successfully"));
        return mv;
    }

    @RequestMapping(value = "/dailyProxy", method=RequestMethod.GET)
    public ModelAndView addDailyProxy(){
        logger.info("Inside proxy manage");
        List<TeacherResource> teachers = teacherService.getTeachers();
        ModelAndView mv = new ModelAndView("admin/teacher/daily-proxy");
        mv.addObject("proxy",new DailyProxy());
        mv.addObject("teachers",teachers);
        return mv;
    }

    @RequestMapping(value = "/dailyProxy", method=RequestMethod.POST)
    public ModelAndView saveDailyProxy(@Valid DailyProxy proxyDaily, RedirectAttributes attr){
        logger.info("Inside proxy manage");
        teacherService.saveDailyProxy(proxyDaily);
        ModelAndView mv = new ModelAndView("redirect:/teachers/viewDailyProxy");
        attr.addFlashAttribute("note", addNote(Status.success, "Daily Proxy added successfully"));
        return mv;
    }


}

JSP文件是

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@page language="java" trimDirectiveWhitespaces="true"%>
<!DOCTYPE html>
<html lang="en">

<%@include file="../../../../include/_common.jsp" %>


<body class="nav-md">

    <div class="container body">


        <div class="main_container">

            <%@include file="../include/_nav.jsp" %>
            <%@include file="../include/_topNav.jsp" %>  
            <!-- page content -->
            <div class="right_col" role="main">
                <div class="">
                    <div class="page-title">
                        <div class="title_left">
                            <h3>Manage Classroom</h3>
                        </div>
                    </div>
                    <div class="clearfix"></div>

                    <div class="row">
                        <div class="col-md-12 col-sm-12 col-xs-12">
                            <div class="x_panel">
                                <div class="x_title">
                                    <h2>Classroom attendance <small>Daily Proxy Attendance</small></h2>
                                    <div class="clearfix"></div>
                                </div>
                                <div class="x_content">
                                    <form:form id="attendanceForm" data-parsley-validate="true" method="POST" modelAttribute="attendance" class="form-horizontal  form-label-left">
                                        <div class="form-group">
                                            <form:label path="teacherId" class="control-label col-md-2 col-sm-3 col-xs-12">Select Teacher<span class="required">*</span></form:label>
                                            <div class="col-md-2 col-sm-6 col-xs-12">
                                                <form:select class="form-control" id="teacherId" path="teacherId" required="required">
                                                    <option>Choose...</option>
                                                    <form:options items="${teachers}" itemValue="teacherId" itemLabel="teacherName"></form:options>
                                                </form:select>
                                            </div>
                                            <label class="control-label col-md-2 col-sm-3 col-xs-12">Proxy Teacher<span class="required">*</span></label>
                                            <div class="col-md-2 col-sm-6 col-xs-12">
                                                <select class="form-control" id="proxyTeacherId" required="required">
                                                    <option>Choose...</option>
                                                </select>
                                            </div>
                                            <form:label class="control-label col-md-2 col-sm-3 col-xs-12" path="classroomId">Select Class <span class="required">*</span>
                                            </form:label>
                                            <div class="col-md-2 col-sm-6 col-xs-12">
                                                <form:select class="form-control" id="classroomId" path="classroomId" required="required">
                                                    <option>Choose...</option>
                                                </form:select>
                                            </div>
                                        </div>

                                        <div class="form-group">
                                            <form:label path="attendanceDate" class="control-label col-md-2 col-sm-3 col-xs-12">Attendance Date <span class="required">*</span>
                                            </form:label>
                                            <div class="col-md-4 col-sm-6 col-xs-12">
                                                <form:input path="attendanceDate" id="attendanceDate" class="date-picker form-control col-md-7 col-xs-12 has-feedback-left" required="required" placeholder="Enter Attendance Date"></form:input>
                                                <span class="fa fa-calendar-o form-control-feedback left" aria-hidden="true"></span>
                                                <span id="inputSuccess2Status" class="sr-only">(success)</span>
                                            </div>
                                        </div>
                                        <div class="ln_solid"></div>
                                        <div class="form-group">
                                            <div id="studentList" class="col-md-12 col-sm-12 col-xs-12">
                                            </div>
                                        </div>
                                        <div class="ln_solid"></div>
                                        <jsp:include page="../include/_form_button.jsp" ></jsp:include>
                                    </form:form>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

                <!-- footer content -->
               <%@include file="../include/_footer.jsp" %>
                <!-- /footer content -->

            </div>
            <!-- /page content -->
        </div>

    </div>

    <%@include file="../include/_notification.jsp" %>
    <script src="${pageContext.request.contextPath}/js/admin/common.js"></script>
    <script src="${pageContext.request.contextPath}/js/admin/classroom.js"></script>
    <script type="text/javascript">
        $( document ).ready( Classroom.DailyProxyAttendance.init() );
    </script>
</body>

</html>

最后是我用js做的ajax电话

 DailyProxy:{
    init: function(){
        Teacher.SubjectProxy.init();
    },
    endDateChange: function(){

    },
    listView: function(){
         $('input.tableflat').iCheck({
             checkboxClass: 'icheckbox_flat-green',
             radioClass: 'iradio_flat-green'
         });
         Common.initSelectBox(ctx +'/admin/classrooms', "classroom", "classroomId", "classroom");
         this.dailyProxyTable = this.initDailyProxyTable("dailyProxyTable");
         this.initControls();
         this.initSearch(this.dailyProxyTable);
         Common.initEditor();
         Common.initToolbarBootstrapBindings();
    },
    initControls: function(){
        $("#classroom").on('change',function(){
            Teacher.DailyProxy.dailyProxyTable._fnAjaxUpdate();
        });
    },
    initSearch: function(table){
        $('input#search').on( 'keyup click', function () {
            Common.filterGlobal(table);
        } );
    },
    initDailyProxyTable: function(tableId){
        var url = ctx +'/admin/teachers/proxyDailyList';
        var initialCoulmns = [{
            "aTargets" : [0],
            "mData" : "proxyId",
            "bSearchable" : false,
            "bSortable" : false,
            "sClass" : "a-center",
            "sWidth" : "5%",
            "mRender": function (oObj){
                return '<input type="checkbox" class="tableflat">';
            }
        },{
            "aTargets" : [1],
            "mData" : "proxyId",
            "bSearchable" : true,
            "bSortable" : true,
            "sType":  "string",
            "sWidth" : "20%",
            "sName": "ProxyId"
        },{
            "aTargets" : [2],
            "mData" : "teacherName",
            "bSearchable" : true,
            "bSortable" : true,
            "sType":  "string",
            "sWidth" : "50%",
            "sName": "ProxyFor"
        },{
            "aTargets" : [3],
            "mData" : "assignedTeacherName",
            "bSearchable" : true,
            "bSortable" : true,
            "sType":  "string",
            "sWidth" : "50%",
            "sName": "AssignedTo"
        },{
            "aTargets" : [4],
            "mData" : "startDate",
            "bSearchable" : true,
            "bSortable" : true,
            "sType":  "string",
            "sWidth" : "50%",
            "sName": "StartDate"
        },{
            "aTargets" : [5],
            "mData" : "endDate",
            "bSearchable" : true,
            "bSortable" : true,
            "sType":  "string",
            "sWidth" : "50%",
            "sName": "EndDate"
        },{
            "aTargets" : [6],
            "mData" : "links",
            "bSearchable" : false,
            "bSortable" : false,
            "sWidth" : "20%",
            "sName" : "Action",
            "mRender": function (oObj){
                var view = oObj[0].href;
                var edit = oObj[1].href;
                return '<a href="'+view+'">View</a> | <a href="'+edit+'">Edit</a>';
            },
            "sName": "Action",
            "sClass": "last"
        }];
        var serverParameterFn = function (aoData) {
            aoData.push(
                {"name": "classroom", "value": $("#classroom").val()}
            );
        }
        return Common.initDataTable(tableId, initialCoulmns, url, serverParameterFn);
    }

我在某些网站上查看了一些q&amp; a,但没有弄清楚问题是什么。

0 个答案:

没有答案