cout << "Enter the number: ";
int number;
cin >> number;
cout << "Enter names: ";
string names;
getline(cin, names);//works on the \n left behind
getline(cin, names);//continues and rewrites names
его довольно самообучающийся, в потоке, который используется cin >> number
, есть\n, который присваивается именам при первом использовании. Повторное использование getline теперь записывает правильное значение.
Для запуска удерживается от использования ServletRequest.getRealPath (Строковый путь) . Соответствующая замена:
ServletContext context = session.getServletContext();
String realContextPath = context.getRealPath(request.getContextPath());
Однако документы API для ServletContext.getRealPath (Строковый путь) состояние:
"Этот метод возвраты
null
, если контейнер сервлета не может перевести виртуальный тракт в реальный путь ни по какой причине (такой как тогда, когда содержание делается доступным из архива .war)".
, Таким образом, API выполняет свой контракт! Однако не все потеряно, поскольку можно загрузить ресурс из ВОЙНЫ с помощью следующего метода, как определено в ServletContext:
ServletContext context = session.getServletContext();
InputStream is = context.getResourceAsStream("generate.xml");
Используете ли вы Weblogic?
Если да, то это проблема Weblogic, которую вы можете исправить в консоли администратора Weblogic. 112]
См .: http://ananthkannan.blogspot.com/2009/12/servletcontextgetrealpath-returns-null.html
Я не верю, что можно делать то, что ты пытаешься сделать.
Вы должны использовать getResource для чтения XML-файла из вашего военного файла (это также работает без войны)
servletContext.getResourceAsStream("/generate.xml")
Начальная косая черта зависит от того, где хранится файл generate.xml.
Следующее исправление работает хорошо для меня.
// I am using Struts2
ServletContext sc = (ServletContext) ac.get(StrutsStatics.SERVLET_CONTEXT);
fileInputStream = sc.getResourceAsStream("test.xls");
После развертывания файла war я могу получить файл из контекстного пути.