spring Java config pour excel afficher le programme de résolution

J'ai un printemps java config à base application web (jsp) afficher le programme de résolution.
Maintenant, je veux montrer une feuille excel avec des données lorsque l'utilisateur clique sur l'icône excel dans l'app.
Tous les cours sur internet je n'ai trouvé basé sur xml printemps config pour excel point de vue avec lequel je ne suis pas familier avec.
J'ai décodé dans une certaine mesure, et est venu assez proche pour obtenir ma tâche accomplie. Ci-dessous est ce que j'ai.

J'ai même contrôleur et la page d'Accueil en suivant le lien ci-dessous:

http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch17s06.html

Controlle Code:

@Controller
public class ExcelController extends AbstractController {

@Override
@RequestMapping(value = "/Excel", method = RequestMethod.POST)
protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    BufferedReader in = null;
     try {
            URL oracle = new URL("example.com");
            URLConnection yc =null;
                yc = oracle.openConnection();
                  in = new BufferedReader(
                         new InputStreamReader(
                         yc.getInputStream()));
     }
     catch(Exception e){
         System.err.println(e);
     }
     Map map = new HashMap();
     map.put("input", in);

    return new ModelAndView("xl", map);
}

}

Afficher Le Code:

public class ExcelReportView extends AbstractExcelView{

@Override
protected void buildExcelDocument(Map model, HSSFWorkbook workbook,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        HSSFSheet sheet;
        HSSFRow row;
        HSSFCell cell;
     try {
            BufferedReader in = (BufferedReader) model.get("input");            
            sheet=workbook.createSheet("spring");

                     String inputLine;
                     int rowNum =0;
                        while ((inputLine = in.readLine()) != null) {
                             row = sheet.createRow(rowNum++);
                            String[] coloumns = inputLine.split("\t");
                            int cellNum =0;
                            for(String coloumn: coloumns){
                                    cell = row.createCell(cellNum++);
                                   cell.setCellValue(coloumn);
                            }
                            System.out.println(inputLine);
                } 
                        in.close();  
                        System.out.println("Excel written successfully..");

                } catch (IOException e) {
                    e.printStackTrace();
                }

}
}

vue.propriétés

 xl.class=package.ExcelReportView   

WebAppConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "package")
public class WebAppContextConfig extends WebMvcConfigurerAdapter {
//Resolve logical view names to .jsp resources in /WEB-INF/views directory

@Bean
public InternalResourceViewResolver configureInternalResourceViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/jsp/");
    resolver.setSuffix(".jsp");
    return resolver;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/scripts/**").addResourceLocations(
            "/scripts/");
    registry.addResourceHandler("/css/**").addResourceLocations("/css/");
    registry.addResourceHandler("/img/**").addResourceLocations("/img/");
}

}

Frontal Code:

 function AjaxCallForExcel(){
   $.ajax({
        type: 'POST',
        url: location.href + '/Excel',
        data: ({name:name })
        }); 
   }

Ci-dessous est ce que je vois dans les logs:

 DispatcherServlet with name 'appServlet' processing POST request for [/App/Excel]
 Looking up handler method for path /App/Excel
 Returning handler method [protected org.springframework.web.servlet.ModelAndView package.ExcelController.handleRequestInternal(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.lang.Exception]
 Returning cached instance of singleton bean 'excelController'
 Invoking afterPropertiesSet() on bean with name 'xl'
 Rendering view [org.springframework.web.servlet.view.JstlView: name 'xl'; URL [**/WEB-INF/jsp/xl.jsp**]] in DispatcherServlet with name 'appServlet'
 Added model object 'org.springframework.validation.BindingResult.input' of type [org.springframework.validation.BeanPropertyBindingResult] to request in view with name 'xl'
 Added model object 'input' of type [java.io.BufferedReader] to request in view with name 'xl'
 Forwarding to resource [/WEB-INF/jsp/xl.jsp] in InternalResourceView 'xl'
 Successfully completed request

Je ne sais pas comment faire pour éviter de la transmettre à xl.jsp. Je suis sûr de voir de résolution, il est en jsp vue. Quelqu'un peut-il point comment puis-je résoudre ce problème.

MODIFIER

J'ai vu cet équivalent xml de config en ligne. Pas sûr de savoir comment faire java config:

<bean id="excelViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
  <property name="order" value="1"/>
  <property name="location" value="/WEB-INF/views.xml"/>
</bean>

j'ai essayé de le convertir au-dessous de façon:

@Bean
public XmlViewResolver configureXmlViewResolver(){
    XmlViewResolver resolver = new XmlViewResolver();
    resolver.setOrder(1);
    resolver.setLocation(**WHAT SHOULD BE HERE**);
}

Je ne sais pas quoi mettre dans l'emplacement. Je ne peux pas donner de chaîne. je n'ai pas views.xml comme je suis à l'utilisation de java configs

Modifier(Voici mon code après avoir fait des changements comme vous l'avez dit)

public class ExcelReportView extends AbstractExcelView{
BufferedReader in;
ExcelReportView(BufferedReader in){
this.in = in;
 }

@Override
protected void buildExcelDocument(Map model, HSSFWorkbook workbook,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        HSSFSheet sheet;
        HSSFRow row;
        HSSFCell cell;
        response.setHeader("Content-Type", "application/octet-stream");
        response.setHeader("Content-Disposition", "attachment; filename=MyExcelSpreadsheet.xls");

     try {
            //BufferedReader in = (BufferedReader) model.get("input");          
            sheet=workbook.createSheet("spring");

                     String inputLine;
                     int rowNum =0;
                        while ((inputLine = in.readLine()) != null) {
                             row = sheet.createRow(rowNum++);
                            String[] coloumns = inputLine.split("\t");
                            int cellNum =0;
                            for(String coloumn: coloumns){
                                    cell = row.createCell(cellNum++);
                                   cell.setCellValue(coloumn);
                            }
                            System.out.println(inputLine);
                } 
                        in.close();  
                        System.out.println("Excel written successfully..");

                } catch (IOException e) {
                    e.printStackTrace();
                }
     OutputStream outStream = null;

        try {
            outStream = response.getOutputStream();
            workbook.write(outStream);
            outStream.flush();
        } finally {
            outStream.close();
        }    
    }
    }

Contrôleur De Code:

    @Controller
    public class ExcelController    {

@RequestMapping(value = "/Excel", method = RequestMethod.POST)
protected ModelAndView generateCSV(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    BufferedReader in = null;
     try {
            URL oracle = new URL("http://service.com");
            URLConnection yc =null;
                yc = oracle.openConnection();
                  in = new BufferedReader(
                         new InputStreamReader(
                         yc.getInputStream()));
     }
     catch(Exception e){
         System.err.println(e);
     }
     ModelAndView mav = new ModelAndView();
     mav.setView(new ExcelReportView( in));
    return mav;
}
    }

Journal de sortie:

    DispatcherServlet with name 'appServlet' processing POST request for [/App/Excel]
    Looking up handler method for path /App/Excel
    Returning handler method [protected org.springframework.web.servlet.ModelAndView com.package.ExcelController.generateCSV(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.lang.Exception]
    Returning cached instance of singleton bean 'excelController'
    Rendering view [com.package.controllers.ExcelReportView: unnamed] in DispatcherServlet with name 'appServlet'
    Created Excel Workbook from scratch
    Title Id required
    Excel written successfully..
    Successfully completed request

EDIT:

En-Tête De Réponse:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: private
Cache-Control: private, must-revalidate
Content-Disposition: attachment; filename=MyExcelSpreadsheet.xls
Content-Type: application/octet-stream;charset=ISO-8859-1
Content-Language: en-US
Transfer-Encoding: chunked
Date: Tue, 12 Mar 2013 16:36:52 GMT

OriginalL'auteur javaMan | 2013-03-07