java - 如何在 servlet 中使用来自 JSP 文件的 Vector?

标签 java html jsp tomcat

<分区>

我在 index.jsp 页面中声明了 Vector,如下所示:

<%! Vector vNumbers = new Vector();%>

我想在servlet中使用,如何正确获取? 另外,如何将 Vector 从 servlet 发送回 JSP? 谢谢!

Joeri,不,我不使用框架。 我有以下 servlet:

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.FileWriter;


public class Sort extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        addNumber(request);
        goToPage("/index.jsp", request, response);
    }

 private void goToPage(String address, HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(address);
        dispatcher.forward(request, response);}


    public static void addNumber(HttpServletRequest request){

        try{
                HttpSession session = request.getSession(true);
                String path = session.getServletContext().getRealPath("/") + "numbers.txt";       
                String dataName = "textarea2";
                FileWriter writer = new FileWriter(path, true);
                writer.write(dataName + ":\n");
                writer.flush();
                writer.close();}
        catch ( Exception e) {}
  }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

}

这是 index.jsp:

<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%! Vector vNumbers = new Vector();%>
<HTML>
<HEAD>
<TITLE>Sorting</TITLE>
</HEAD>
<BODY>
<H1>Sorting a vector</H1>
<FORM ACTION="index.jsp" METHOD="POST">
  Input a number:
  <input type="text" name="textarea1">
  <INPUT TYPE="SUBMIT" VALUE="Enter">
</form>
<FORM ACTION="index.jsp" METHOD="POST">
  Enter amount of numbers to generate:
  <input type="text" name="textarea2">
  <input type="SUBMIT" value="Generate">
</FORM>
Your list:
<br>
 <%
  String number = request.getParameter("textarea1");
  String value = request.getParameter("textarea2");
  if (number != null) vNumbers.add(number);
   Random randomGenerator = new Random();
  if (value != null) for (int i = 0; i < Integer.parseInt(value); ++i)
  vNumbers.add(randomGenerator.nextInt(100));
  out.println(vNumbers);
       %>
<br>
<br>
<br>
</form>
<FORM ACTION="Sort.do" METHOD="POST">
  <input type="SUBMIT" value="Sort">
</FORM>
<br>
<%
String file = application.getRealPath("/") + "numbers.txt";
FileReader filereader = new FileReader(file);
BufferedReader br = new BufferedReader(filereader);
String eachLine = br.readLine();
while (eachLine != null) {
out.println(eachLine);
out.println("<br>");
eachLine = br.readLine();
}
filereader.close();       
%>
</BODY>
<HTML>

最佳答案

请注意,

request.getAttribute() 是一种在 servlet 和 JSP 之间传递参数的服务器端机制。而
request.getParameter() 通常是将参数传递给 servlet 和 JSP 的浏览器端机制。

<%! Vector vNumbers = new Vector();%>

vNumbers 仅在该 JSP 页面内具有范围。要将其传递给其他 servlet/jsps,您需要将其设置为请求属性。

在 JSP 内部使用 request.setAttribute("vector", vNumbers); 在 Servlet 中,您可以使用 Vector v = (Vector)request.getAttribute("vector");

检索它

您也可以将其作为 session 属性发送。类似问题here

PS:您应该尽量减少 JSP 中的 Java 代码。

关于java - 如何在 servlet 中使用来自 JSP 文件的 Vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599321/

相关文章:

javascript - 删除DataGrid(Dojo)实例和表(DataGrid)正确显示

java - 可以向父线程抛出异常吗

java - 为什么 ExpectedException 在 Spring 中被弃用

javascript - 使用javascript制作文本突出显示

javascript - 光标在鼠标按下和拖动时不会改变 (IE11)

java - Ajax 函数始终返回 0 并且不会继续进行

java - JOOQ 使用转换器将字符串转换为枚举

java - 如何删除 jackson 中重复的@JsonProperty

javascript - Highcharts - 更改悬停点的颜色

javascript - 如何阻止 <a> 标签的 window.on ('beforeUnload' ) 事件?