【问题标题】:JSP hand over text to java and another jsp [duplicate]JSP将文本交给java和另一个jsp [重复]
【发布时间】:2016-05-14 05:00:54
【问题描述】:

我有一个带有 textarea 和一个按钮、一个 servlet 和一个新 jsp 的 JSP 页面:

我的 3 个问题是:

  1. 我的 analysis.jsp 是空的。我的浏览器打开了一个新标签,但没有“Hello World”文本
  2. 我的 java 类中的变量“sql”也是空的。它应该包含我的 textarea 中的文本
  3. 如何在我的变量 sql 不为空(分析后)新代码后移交给新 jsp

index.jsp

<form action="ServletName" method="post" target="_blank">
    <div class="form-group">
       <label for="codeEditor" style="margin-top: 15px;">Code:</label>
            <textarea name="codeEditor" class="form-control" id="codeEditor" rows="15" style="resize: none;"></textarea>
    </div>

    <div class="analysisButton">
        <button type="submit" id="startAnalysis" class="btn btn-default btn-block" style="margin-top: 10px;">Start analysis</button>        
    </div>
</form>

ServletName.java

protected void doPost(...) ...{
    String sql = request.getParameter("codeEditor");

    response.sendRedirect("/analysis.jsp");
}

analysis.jsp

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Hello World!</h1>
</body>

在此先感谢

更新:没关系变量 sql 不是空的

【问题讨论】:

  • 将您的查询转发到 servlet 并在其中调用您的 java 类的方法。
  • 你能告诉我更多吗? :/ 我不是 query/jsp 方面的专家
  • 这个问题非常宽泛。一方面,textarea 在任何有意义的意义上都不是“在 JSP 中”——它在客户端的浏览器中。如何将数据返回到服务器端是一个非常广泛的主题,从 TCP/IP 开始,到 Ajax 和 WebSockets 结束。见here
  • 为什么我的问题是重复的?可能已解决的问题(jsp 到 servlet)已解决,但还有 2 个其他未解决的问题。指的是 jsp 到 servlet
  • 每个问题只问一个问题。这更容易找到答案、获得答案和接受一个答案。副本基于您当前接受的答案。多年来,所有这些初学者的问题都在这里被反复讨论了很多次,所以当一个被关闭为重复的问题时,不要感到惊讶,因为另一个初学者巧合地问过同样的问题。

标签: java jsp servlets


【解决方案1】:

是的,这可能就像

一样简单

JSP

<form action="some_url" method="post" >
<inputarea name="sqlQuery"  >
<input type="submit" value="Sql query" >
<form >

在你的 servlet 中,你会有类似的东西

小服务程序

 public void doPost(HttpServletRequest request, HttpServletResponse 
        response) throws IOException, ServletException  {

 ...//check that the request is correct
 String query = request.getParameter("sqlQuery");//name of textarea
 try{
 Connection conn = getConnection();//Search SO for how to get a connection 
 PreparedStatement stmt = conn.prepareStatement(query);
//if your query has any arguments(?) (e.g select * from tbl where id=?),  then you should set them too
 //stmt.setInt(1, 1000);
ResultSet rs = stmt.executeQuery();
while(rs.next()){

//get database dana here
int someIntVal = rs.getInt("intColumn");
String someStr = rs.getString("someStringColumn");
}catch(SQLException e){
//handle exception
}
}

【讨论】:

    【解决方案2】:

    您可以使用简单的表单提交来做到这一点:

    <form method="POST" action="/myServletPath">
       <inputarea name="sqltext" ...
    

    然后,您的 servlet(带有 url 映射“myServletPath”)可以在 doPost 方法中:

    String sql = request.getParameter("sqltext")...
    

    然后为所欲为。

    警告:如果这是您的生产应用程序的代码,请注意 SQL 注入攻击。这通常是您不会为任何信任您以外的用户的应用程序编写的代码。

    【讨论】:

    • 好的,谢谢,我会试试这个并告诉你:)
    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多