Не могу передать java

Не могу передать значения из jsp в сервлет и снова в jsp

Имеется солидный проект, в котором суть такова:
Сайт с просмотром новостей (меню новостей, название новости и текст новости, данные которых лежать в базе данных mysql), и авторизацией пользователей
Имеется сервлет admin.adminController который мы запускаем, он по началу запускает нам форму logIn.jsp — формы ввода пароля и ника, после чего должен взять эти значения и вернуть в adminController, где я уже их выведу или проверю. Моя проблема в том, что у меня вылазит ошибка пути в промежутке передачи пароля и ника в adminController
adminController:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
package admin; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import data.*; import dao.*; import admin.command.*; @WebServlet("/adminController") public class adminController extends HttpServlet { private static final long serialVersionUID = 1L; dao dao; public adminController() { super(); dao = Pagedao.getDao(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String operation = request.getParameter("operation"); Command com = null; if(operation == null) { RequestDispatcher dispatcher = request.getRequestDispatcher("/LogIn.jsp"); } else if (operation == "check") { String name_user = request.getParameter("name_user"); String password_user = request.getParameter("password_user"); System.out.print(name_user); //RequestDispatcher dispatcher = request.getRequestDispatcher("/mainPage.jsp"); //com = new ShowCommand(); } com.execute(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  html> head> meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> title>LogIn in your web-site/title> /head> body> form action="Itogovoe Zadanie/admin.adminController" name="LogIn" method="post"> FIELDSET> LEGEND>Write your login and password/LEGEND> input type="text" name="name_user">br> input type="text" name="password_user">br> input type="hidden" name="operation" value="check">br> input type="submit" id="otpr" name="otpr" value="Send"> /FIELDSET> /form> /body> /html>

Источник

Не могу передать строку

Здравствуйте! Проблема такова: Реализовано клиент-серверное приложение. При подключении к клиенту сервер посылает ему строку, содержащую название ОС, на которой запущен сервер. Проблема: В сервере строка передается не пустая, а клиент получает пустую строку. Подскажите пожалуйста, где ошибка. Заранее спасибо!

Руководствовался статьей: http://sites.znu.edu.ua/javapr. 6.ukr.html ну и смотрел примеры с Шилдта

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
public static void main(String args[]){ BufferedWriter os_type; Process proc; String os= null; try{ ServerSocket serv= new ServerSocket(12345); Socket sk; sk= serv.accept(); if(sk.isConnected()==true) { System.out.println("Client connected"); os= System.getProperty("os.name"); System.out.println(os); os_type= new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())); os_type.write(os); sk.close(); serv.close(); } } catch(IOException ex){ System.out.println(ex.toString()); } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
String ip_adress= jTextField1.getText(); int port= Integer.parseInt(jTextField2.getText()); try { client = new Socket(ip_adress, port); } catch(Exception ex2){ jTextArea1.setText("ex2"+ex2.toString()); } if(client.isConnected()){ jLabel1.setForeground(Color.green); jLabel1.setText( "connected"); try{ type_os= new BufferedReader(new InputStreamReader(client.getInputStream())); os= type_os.readLine(); jTextArea1.setText(os); jLabel3.setText(os); client.close(); } catch(IOException ex){ jTextArea1.setText("ex"+ex.toString()); } } }

Источник

Читайте также:  Java certification guide pdf

Не передается значение переменной

Выводил значение переменной в процессе игры на консоль везде пишет 0
В чем проблема?

Добавлено через 13 минут
Такое ощущение что getPath не выполняется

Как передается значение переменной (по ссылке / значению) ?
Готовлюсь я значит к интервью, и тут нахожу вот такой ответ на вопрос в заголовке. Я то для.

Не передаётся значение int методу класса
Кусок кода в классе мэин: Scanner scan = new Scanner(System.in); FreightCar.

Значение с одного класса передаётся во второйй класс
Здравствуйте!).. Написал почти программку).. interface LogicFunctionable < public int.

Значение параметра в SQL запросе передается с кавычкой.
Здрасте! Проблема вот в чем: при передаче параметра от одного сервлета к другому значение.

ЦитатаСообщение от qdhtnsoyndtr Посмотреть сообщение

WyPik, а как к нему обратиться?

Добавлено через 2 минуты
Добавил getPath(); в событие, но не помогло

Добавлено через 1 минуту
Но теперь 0 на приеме

public void setPath (int path) { this.path = path; System.out.println(path); }

ну т.к гетпас это метод — его нужно вызывать,сам по себе метод работать не будет

public void actionPerformed(ActionEvent e) { path = 50000; getPath(); s.startGame(); frame.setVisible(false); } });

могу только сказать что по вашему коду переменная пас будет изменена только после нажатия кнопки.Возможно,вы не нажимали кнопки,возможно еще что-то.По факту должна работать.

так она и должна работать после нажатия на кнопку, и метод выпоняется, но в там где его должны встречать почему то 0.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class Buttons extends JFrame { static Buttons b = new Buttons(); static JButton b1,b2; int path; public static void main(String[] args) { b.init(); } void init(){ setSize(300, 300); setLocationRelativeTo(null); setVisible(true); setDefaultCloseOperation(3); setLayout(new FlowLayout()); b1 = new JButton("присвоить"); b2 = new JButton("показать"); b1.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { path=50; } }); b2.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { getPath(); } }); add(b1); add(b2); } private void getPath() { System.out.println(path); } }

У вас 2 переменные path в разных классах,мозможно,вы запутались и где-то ее обулили,или еще что либо.
Если хотите чтоб у вас была всего 1 переменная пас для всех классов — сделайте ее статичной.

Читайте также:  Фигуры в html примеры

Источник

Java: передача параметров по значению или по ссылке

Простое объяснение принципов передачи параметров в Java.

Многие программисты часто путают, какие параметры в Java передаются по значению, а какие по ссылке. Давайте визуализируем этот процесс, и тогда вы увидите насколько все просто.

Данные передаются между методами через параметры. Есть два способа передачи параметров:

  1. Передача по значению (by value). Значения фактических параметров копируются. Вызываемый метод создает свою копию значений аргументов и затем ее использует. Поскольку работа ведется с копией, на исходный параметр это никак не влияет.
  2. Передача по ссылке (by reference). Параметры передаются как ссылка (адрес) на исходную переменную. Вызываемый метод не создает свою копию, а ссылается на исходное значение. Следовательно, изменения, сделанные в вызываемом методе, также будут отражены в исходном значении.

В Java переменные хранятся следующим образом:

  1. Локальные переменные, такие как примитивы и ссылки на объекты, создаются в стеке.
  2. Объекты — в куче (heap).

Теперь вернемся к основному вопросу: переменные передаются по значению или по ссылке?

Java всегда передает параметры по значению

Чтобы разобраться с этим, давайте посмотрим на пример.

Пример передачи примитивов по значению

Поскольку Java передает параметры по значению, метод processData работает с копией данных. Следовательно, в исходных данных (в методе main ) не произошло никаких изменений.

Теперь рассмотрим другой пример:

Передача объекта

Что здесь происходит? Если Java передает параметры по значению, то почему был изменен исходный список? Похоже, что Java все-таки передает параметры не по значению? Нет, неправильно. Повторяйте за мной: «Java всегда передает параметры по значению».

Чтобы с этим разобраться, давайте посмотрим на следующую диаграмму.

Память стека (stack) и кучи (heap)

В программе, приведенной выше, список fruits передается методу processData . Переменная fruitRef — это копия параметра fruit . И fruits и fruitsRef размещаются в стеке. Это две разные ссылки. Но самое интересное заключается в том, что они указывают на один и тот же объект в куче. То есть, любое изменение, которое вы вносите с помощью любой из этих ссылок, влияет на объект.

Давайте посмотрим на еще один пример:

Передача объекта по ссылкеПамять стека (stack) и кучи (heap)

В этом случае для изменения ссылки fruitRef мы использовали оператор new . Теперь fruitRef указывает на новый объект, и, следовательно, любые изменения, которые вы вносите в него, не повлияют на исходный объект списка фруктов.

Читайте также:  Хранить массив в сессии php

Итак, Java всегда передает параметры по значению. Однако мы должны быть осторожны при передаче ссылок на объекты.

Вышеприведенная концепция очень важна для правильного решения ваших задач.

Например, рассмотрим удаление узла в односвязном списке.

Удаление узла в связанном списке

class Node < int data; Node next; Node(int d)< data = d; next = null; >> class LinkedList < public static Node push(Node head, int data) < Node newNode = new Node(data); newNode.next = head; head = newNode; return head; >public static void deleteNode(Node head, int position) < // List is empty if (head == null)< return; >// If position is 1st, removing head node if (position == 1) < head = head.next; return; >Node prevNode = head; int i = 2; while (prevNode != null && i != position) < prevNode = prevNode.next; i++; >// When position is more than number of node if (prevNode == null || prevNode.next == null) < return; >prevNode.next = prevNode.next.next; > public static void printList(Node head) < Node currNode = head; while (currNode != null) < System.out.print(currNode.data + " "); currNode = currNode.next; >> public static void main(String[] args) < Node head = null; head = push(head, 5); head = push(head, 4); head = push(head, 3); head = push(head, 2); head = push(head, 1); System.out.println("Created Linked list is: "); printList(head); // Delete node at position 2 deleteNode(head, 2); System.out.println("\nLinked List after Deletion at position 2: "); printList(head); >> 

Это решение работает во всех случаях, кроме одного — когда вы удаляете первый узел ( Position = 1 ). Основываясь на ранее описанной концепции, видите ли вы в чем здесь проблема? Возможно, поможет следующая диаграмма.

Удаление первого узла односвязного списка

Для исправления алгоритма необходимо сделать следующее:

public static Node deleteNode(Node head, int position) < // List is empty if (head == null)< return head; >// If position is 1st, removing head node if (position == 1) < head = head.next; return head; >Node prevNode = head; int i = 2; while (prevNode != null && i != position) < prevNode = prevNode.next; i++; >// When position is more than number of node if (prevNode == null || prevNode.next == null) < return head; >prevNode.next = prevNode.next.next; return head; > public static void main(String[] args) < Node head = null; head = push(head, 5); head = push(head, 4); head = push(head, 3); head = push(head, 2); head = push(head, 1); System.out.println("Created Linked list is: "); printList(head); // Delete node at position 2 head = deleteNode(head, 2); System.out.println("\nLinked List after Deletion at position 2: "); printList(head); >//Rest of the code remains same 

В этой статье мы обсудили одну небольшую, но важную концепцию Java: передачу параметров.

Перевод статьи подготовлен в преддверии старта курса «Подготовка к сертификации Oracle Java Programmer (OCAJP)».

Подробнее о курсе и программе обучения можно узнать на бесплатном вебинаре, который пройдет 15 апреля.

ЗАПИСАТЬСЯ НА ВЕБИНАР

Источник

Оцените статью