Страница 2 из 3

Добавлено: 30 июл 2004, 13:42
Oscar
AiK,
Прекрасно, а откуда будет вызываться stupidMethod?

Я догадывался, что именно "main", может и не нужен, но куда вписать следующую строку?

StupidClass.stupidMethod(new String(request.getParameter("v").getBytes("windows-1251")));


обычно есть main
для Threads есть run или start, кажется..
Я предполагал, что и для JSP файлов должно нечто подобное быть..
Функция, которая будет первой выполнена, при обращении к JSP файлу ..

Добавлено: 30 июл 2004, 14:59
AiK
куда вписать следующую строку
Куда угодно в странице в угловых скобках с процентиком. Более того, страница может не содержать ни единой строчки Java кода и при этом изюмительно работать. Как, спросишь ты? А очень просто, отвечу я. При первом обращении к странице из неё будет изготовлен сервлет, и все последующие вызовы будут перенаправляться к этому сервлету. Сервлет, это что-то наподобие аплета. Только аплет живёт в браузере, а сервлет - в контейнере сервлетов (сорри за масло-масляное :) ). Т.е. они сами по себе не запускается, а их запускают со стороны. Поэтому, как и у аплета, у него существуют методы, хотя бы один из которых должен быть реализован в зависимости каким HTTP методом был вызван сервлет. Для метода GET нужно реализовать метод doGet, а для метода POST - doPost. Впрочем, сервлеты после того как я на них последний раз пристально смотрел, бурно развивались, и возможно уже есть один метод на все случаи вызовов сервлета, не знаю.

Итак, если ты объявишь в JSP собственный класс с методом main, то никто кроме тебя его вызывать не будет. В аплете ты можешь тоже имплементировать метод main и запустить его как обычное java-приложение. Но в браузере вызова метода main не произойдёт, если только ты сам его не выполнишь...
Ежели ты просто попытаешься объявить метод main внутри JSP страницы, то это будет ошибкой - сервлет из неё не скомпилится.

Добавлено: 30 июл 2004, 15:24
Oscar
AiK, Вау! Супер, спасибо!! :-)
Именно то, о чем спрашивал !! ))

Добавлено: 30 июл 2004, 18:34
uncledm
Дали еще один вариант.

Код: Выделить всё

<%@ page import="java.io.*" session="false"%>
<%

        final String filename = "data.txt";
        final String parameterEncoding = "windows-1251";
        final String fileEncoding = "windows-1251";
        try {
            request.setCharacterEncoding(parameterEncoding);
            String text = request.getParameter("v");
            PrintWriter writer = new PrintWriter(
                  new OutputStreamWriter(
                        new FileOutputStream(filename), "windows-1251"));
            writer.print(text);
            writer.close();
        } catch (Exception e) {
            
        }

%>

Добавлено: 30 июл 2004, 21:06
Oscar
uncledm,
"Дали" - добрые люди? ))
И что - тоже не работает? ))
А сервер вообще JSP поддерживает? ))

Добавлено: 31 июл 2004, 07:46
uncledm
Да "Дали" - добрые люди ((
И тоже не работает ((
А сервер вообще JSP поддерживает! (( (по утверждению тех отдела провайдера)

Добавлено: 02 авг 2004, 08:58
Deady
Oscar писал(а):uncledm,
"Дали" - добрые люди? ))
И что - тоже не работает? ))
А сервер вообще JSP поддерживает? ))
Aik, не читал твой пост целиком (лень было), но с певых строчек понял, что ты расписываешь сервлет, а не jsp.

<?php
$text=$HTTP_POST_VARS["v"];
$file=fopen("data.txt","w+");
@fwrite ($file, $text);
@fclose ($file);
?>

переписывается так:
index.jsp
====================================
<%@ page contentType="text/html; charset=windows-1251"%>

<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>

<%
String text = request.getParameter("v");
PrintWriter f = new PrintWriter(new FileWriter("data.txt"));
f.println(text);
f.close();
%>
====================================

полученный файл (все, что между знаками =====) сохраняется и кидается на сервер. причем кинуть его надо в определенное место, админ должен сказать куда (зависит от платформы).

Добавлено: 02 авг 2004, 09:12
Deady
AiK писал(а):
куда вписать следующую строку
Ежели ты просто попытаешься объявить метод main внутри JSP страницы, то это будет ошибкой - сервлет из неё не скомпилится.
скомпилится, только его надо будет объявлять так (обязателен символ '!'):
<%!
public static void main(String[] args) { }
%>
вызываться естественно не будет. автоматически вызывается только то, что заключено в <% %>.

Добавлено: 02 авг 2004, 11:37
AiK
Deady, про восклицательный знак не знал, 10х.
ты расписываешь сервлет, а не jsp
Так jsp суть сервлет, разве не так? :)

Добавлено: 02 авг 2004, 13:37
Deady
ну да, только если знаешь что такое сервлет и заешь про doGet и doPost (объединяет их кстати doRequest). а если не знаешь и необходимо всего-то лишь решить такую маленькуб задачу, то можно мыслить jsp не как сервлет, а как php скрипт - проще будет.