【问题标题】:JSP linking with Java Servlet BackEnd CodeJSP 与 Java Servlet 后端代码的链接
【发布时间】:2018-06-16 07:16:15
【问题描述】:

我正在尝试将我的 Jsp 页面与我的 servlet 链接,但出现此错误:

javax.servlet.ServletException: Servlet.init() for servlet ImageServlet threw exception
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered`

下面是我的 Servlet 代码:

package servlet;

@Component("ImageServlet")    
public class ImageServlet implements HttpRequestHandler {

    @Autowired
    imageDA imageda = new imageDA();
    ResultSet rs = null;
    byte[] thumb ;// get the thumb from the user entity

    @Override
    public void handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        int generatedDocId = Integer.parseInt(request.getParameter("generatedDocId"));
      try{
          rs =  imageda.getAllImage(generatedDocId);
       if(rs.next()){
           thumb = rs.getBytes("IMAGE");
       }
       }catch(SQLException ex){
           ex.getMessage();
       }
        String name = "images";
        response.setContentType("image/jpeg");
        response.setContentLength(thumb.length);
        response.setHeader("Content-Disposition", "inline; filename=\"" + name+ "\"");

        BufferedInputStream input = null;
        BufferedOutputStream output = null;

        try {
            input = new BufferedInputStream(new ByteArrayInputStream(thumb));
            output = new BufferedOutputStream(response.getOutputStream());
            byte[] buffer = new byte[8192];
            int length;
            while ((length = input.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }
        } catch (IOException e) {
            System.out.println("There are errors in reading/writing image stream "
                    + e.getMessage());
        } finally {
            if (output != null) {
                try {
                    output.close();
                } catch (IOException ignore) {
                }
            }
            if (input != null) {
                try {
                    input.close();
                } catch (IOException ignore) {
                }
            }
        }

    }
}

这是我的 XML 代码链接到我的 viewData.jsp JSP 页面:

<servlet>
  <servlet-name>ImageServlet</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/viewData.jsp</url-pattern>
    </servlet-mapping>
</web-app>

已编辑,这是我的完整版 XML 代码。我将它们中的大部分用于我的 Request.getPart(),尝试为 spring 配置 XML,但它不起作用。感谢您的帮助

        <?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <servlet>
        <servlet-name>UploadFile</servlet-name>
        <jsp-file>/projectAddData.jsp</jsp-file>
        <multipart-config>
            <max-file-size>20848820</max-file-size>
            <max-request-size>418018841</max-request-size>
            <file-size-threshold>1048576</file-size-threshold>
        </multipart-config>
    </servlet>
    <servlet-mapping>
        <servlet-name>UploadFile</servlet-name>
        <url-pattern>/projectAddData.jsp</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>UploadFile1</servlet-name>
        <jsp-file>/addClaim.jsp</jsp-file>
        <multipart-config>
            <max-file-size>20848820</max-file-size>
            <max-request-size>418018841</max-request-size>
            <file-size-threshold>1048576</file-size-threshold>
        </multipart-config>
    </servlet>
    <servlet>
        <servlet-name>UploadServlet1</servlet-name>
        <servlet-class>UploadServlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UploadFile1</servlet-name>
        <url-pattern>/addClaim.jsp</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>UploadFile2</servlet-name>
        <jsp-file>/addInvoice.jsp</jsp-file>
        <multipart-config>
            <max-file-size>20848820</max-file-size>
            <max-request-size>418018841</max-request-size>
            <file-size-threshold>1048576</file-size-threshold>
        </multipart-config>
    </servlet>
    <servlet>
        <servlet-name>UploadServlet2</servlet-name>
        <servlet-class>UploadServlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>UploadFile2</servlet-name>
        <url-pattern>/addInvoice.jsp</url-pattern>
    </servlet-mapping>

<servlet>
    <servlet-name>imageServlet</servlet-name>
    <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>imageServlet</servlet-name>
    <url-pattern>/viewData.jsp</url-pattern>
</servlet-mapping>
<context-param>
  <param-name>contextConfigLocation</param-name>
  <!-- The path to your main spring xml file, for example: /WEB-INF/spring-config.xml -->
  <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>    
<listener>
  <listener-class>
    org.springframework.web.context.ContextLoaderListener
  </listener-class>
</listener>
</web-app>

【问题讨论】:

    标签: spring jsp spring-mvc exception servlets


    【解决方案1】:

    异常告诉你,虽然你打算使用spring,但是ApplicationContext由于缺少必要的监听配置而无法加载。 Spring 需要知道主 bean 配置文件的路径,而缺少的侦听器就是它用来查找该信息的。

    将此添加到您的 web.xml(作为根 &lt;web-app&gt; 元素的子元素,您的网络应用程序将启动(或至少使其超过您现在遇到的错误)。

    <context-param>
      <param-name>contextConfigLocation</param-name>
      <!-- The path to your main spring xml file, for example: /WEB-INF/spring-config.xml -->
      <param-value>/WEB-INF/spring-config.xml</param-value>
    </context-param>    
    <listener>
      <listener-class>
        org.springframework.web.context.ContextLoaderListener
      </listener-class>
    </listener>
    

    【讨论】:

    • 它与之前的错误消息相同 javax.servlet.ServletException: Servlet.init() for servlet ImageServlet throw exception java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered`
    • 您使用的是什么版本的 Spring?你的 servlet 容器是什么?另外,请发布您的 web.xml。
    • 我真的不知道我使用的是什么版本,对不起,我是 spring 新手。这是我的 XML 文件中的所有代码。
    • 更改 web.xml 后是否重新启动了容器?
    • 是的,我什至重建并重新启动计算机,但它也无法正常工作:/
    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2020-03-26
    • 2010-10-27
    相关资源
    最近更新 更多