在JSP页面加载

时间:2015-10-07 02:59:41

标签: java jsp servlets

我刚刚开始使用Servlets,我完全被难倒了。

我在线查看了数十种资源,并尝试了所有这些资源但没有成功。所有这些(有微小的变化)都有一个包含以下代码的jsp文件:

<%= request.getAttribute("message")%>

...以及包含此代码的servlet:

String message = "Example source code of Servlet to JSP communication.";
    request.setAttribute("message", message);

    getServletContext().getRequestDispatcher("/newjsp_1.jsp").forward(request, response);

我把上面的代码放在doPost(),doGet()和servlet的主体中,没有任何作用。然后我发现jsp文件实际上不知道它应该与哪个servlet进行通信。我研究了xml映射和注释映射,但它们似乎并不适用。

到目前为止,我已经与Ajax进行了很好的沟通,但是我可以使用ajax指定操作。如何将数据从jsp传递到servlet,然后再传回?

任何想法都将不胜感激!

3 个答案:

答案 0 :(得分:2)

这是一个简单的Servlet-JSP通信示例代码:

<强>的index.jsp

<!doctype html>
<html>
<head>
    <title>Servlet - JSP Communication Demo</title>
</head>

<body>
    <%
        if(request.getAttribute("message") != null) {
            out.println("<h1>" + request.getAttribute("message") + "</h1>");
        }
    %>

    <form method="get" action="sayhello">
        <label for="name">Enter your name</label>
        <input type="text" name="name" id="name" />
        <input type="submit" value="Submit">
    </form>
</body>
</html>

<强> ServletDemo.java

package com.demo;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo extends HttpServlet{

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if(request.getParameter("name") != null && request.getParameter("name") != "") {
            request.setAttribute("message", "Hello " + request.getParameter("name"));
        }else {
            request.setAttribute("message", "");
        }

        getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);
    }
}

<强>的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet>
        <servlet-name>Servlet-JSP Communication Demo</servlet-name>
        <servlet-class>com.demo.ServletDemo</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Servlet-JSP Communication Demo</servlet-name>
        <url-pattern>/sayhello</url-pattern>
    </servlet-mapping>
</web-app>

目录结构

--tomcat
  --webapps
    --servlet
      --WEB-INF
        --classes
          --com
            --demo
              --ServletDemo.class
      --web.xml
    --index.jsp

代码说明

这里我创建了一个简单的表单,通过ServletDemo方法将表单数据发送到GET servlet。另一方面,servlet获取表单数据并回复一些消息。在JSP中显示消息。

答案 1 :(得分:1)

你采取的方法是古老的方法!这是1999年的JavaWorld article,它描述了如何在servlet和JSP之间进行通信。

在web.xml中,将URL路径绑定到servlet。应用服务器将通过调用servlet上的HTTP GET响应该URL路径上的doGet(),并通过调用HTTP POSTdoPost()。您可以将作为参数传递的HttpServletRequest的属性设置为这些方法。使用该请求调用forward方法时,将与JSP共享属性。

这就是它应该如何运作。

答案 2 :(得分:-2)

尝试使用

的request.getRequestDispatcher()。正向(请求,响应)