簡體   English   中英

無法獲取servlet轉發的jsp中的屬性

[英]Can't get attribute in jsp forwarded by servlet

我有簡單的jsp應用程序。 那使用Maven。

pom.xml中:

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Lab3.web_application</groupId>
    <artifactId>web_application</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>web_application Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>

    <build>
    <finalName>web_application</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.oracle.weblogic</groupId>
            <artifactId>wls-maven-plugin</artifactId>
            <version>12.1.3.0</version>
            <configuration>
                <middlewareHome>/home/bluebird/Oracle/Middleware/Oracle_Home</middlewareHome>
                <adminurl>t3://localhost:7001</adminurl>
                <domainHome>/home/bluebird/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain
                </domainHome>
                <user>weblogic</user>
                <password>yamahar6</password>
                <upload>true</upload>
                <remote>false</remote>
                <verbose>true</verbose>
                <source>./target/web_application.war</source>
                <name>${project.build.finalName}</name>
            </configuration>
            <executions>
                <execution>
                    <id>startserver</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>start-server</goal>
                    </goals>
                </execution>
                <execution>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>deploy</goal>
                    </goals>
                  </execution>
                </executions>
            </plugin>
         </plugins>
     </build>
  <distributionManagement>
    <snapshotRepository>
        <id>localSnapshot</id>
        <name>local snapshot repository</name>
        <url>file:///home/bluebird/.m2/repository</url>
    </snapshotRepository>
  </distributionManagement>
</project>

索引jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head><title>Hello World ${requestScope.name}</title></head>
    <body>
        Hello World!<br/>
    <%
      out.println("Your IP address is " + request.getRemoteAddr());
      out.println("Your name is " +     request.getAttribute("name"));
     %>
    </body>
</html>

web.xml中:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>MainServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>MainServlet</servlet-name>
    <url-pattern>/processForm</url-pattern>
  </servlet-mapping>

</web-app>

MainServlet.java:

@WebServlet("/processForm")
public class MainServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {


        req.setAttribute("name", "Devcolibri");
        req.getRequestDispatcher("index.jsp").forward(req, resp);


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

        super.doPost(req, resp);
    }

}

服務器已成功運行且應用程序正常運行。 但是,我無法獲得servlet設置的屬性。 在網絡瀏覽器中,我收到:

你好,世界! 您的IP地址是127.0.0.1您的名稱為null

我已經閱讀了Servlet設置的Cannot get屬性(在請求范圍內)並轉發給JSP,但它沒有幫助我。

感謝所有讀完的人。 希望對您有所幫助。 PS對不起,我的英語。 我來自烏克蘭。

我認為您所讀問題的答案可以說明情況,但不能完全告訴您要使用的網址。 /processForm是您必須請求才能調用servlet的映射路徑。

因此,如果您的Web應用程序的上下文路徑為/web_application ,則需要瀏覽至/web_application/processForm

如果僅瀏覽到/web_application ,則容器將搜索歡迎文件 ,並且由於index.jsp默認存在,因此您將在不調用servlet的情況下請求jsp。 因此,在Servlet中設置的請求屬性將為null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM