2016-02-04 2 views
0

У меня есть страница JSP с текстовым и кнопками, сервлетом и новым JSP:JSP сдайте текст Java и другой JSP

Моих 3 проблем:

  1. Моим analysis.jsp пусто. Мой бордер открывает новую вкладку, но без текста «Hello World»
  2. Переменная «sql» в моем классе java также пуста. Он должен содержать текст из моего текстового поля
  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> 

Большое спасибо заранее

UPDATE: фигу переменная SQL не является пустым < (^,^<), а остальные 2 вопроса открыты :)

+1

Форвард ваш запрос в сервлет и внутри этого вызова ваш метод класса java. – Satya

+0

не могли бы вы рассказать мне немного больше? :/Я не про в запросе/jsp – xNappy

+1

Этот вопрос ** очень ** широкий. Для одного textarea не является «в JSP» в каком-либо значимом смысле - он находится в браузере на стороне клиента. Как вы получаете, чем данные обратно на сервер - это чрезвычайно широкая тема, начинающаяся с TCP/IP и заканчивающаяся Ajax и WebSockets. См. [Здесь] (https://en.wikipedia.org/wiki/Client%E2%80%93server_model). –

ответ

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 
} 
} 
0

Вы могли бы сделать это с помощью простая форма представляет:

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

Ваш сервлет (с URL-адрес отображения 'myServletPath') может затем, в методе doPost:

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

И тогда сделайте все, что захотите.

ВНИМАНИЕ: Если это код для вашего производственного приложения, тогда имейте в виду атаки SQL-инъекций. Обычно это код, который вы бы не писали для любого приложения, которое доверяет другим пользователям.

+0

ладно спасибо, я попробую это и скажу вам :) – xNappy

Смежные вопросы