Не могу правильно обратиться к сервлету

182
20 мая 2018, 02:20

Изучаю spring mvc, сборку делаю на maven.

С одной из страниц, а именно из form я должен перейти к странице end. Но вместо этого получаю вот это :

Код контроллера:

@Controller
public class HomeController {
    public static void main(String args[]){
    }
    Hi hi=new Hi();
    @RequestMapping(value = "/")
    public String home(){
        return hi.getHello();
    }
    @RequestMapping(value="/form")
    public String form(){
        return "form";
    }
    @RequestMapping(value="/end") //method = RequestMethod.GET
    public String end(HttpServletRequest request, HttpServletResponse response) throws SQLException {
        String DB_URL = "jdbc:postgresql://127.0.0.1:5432/postgres";
        String USER = "postgres";
        String PASS = "1234";
        System.out.println("Testing connection to PostgreSQL JDBC");
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("PostgreSQL JDBC Driver is not found. Include it in your library path ");
            e.printStackTrace();
        }
        System.out.println("PostgreSQL JDBC Driver successfully connected");
        Connection connection = null;
        try {
            connection = DriverManager
                    .getConnection(DB_URL, USER, PASS);
        } catch (SQLException e) {
            System.out.println("Connection Failed");
            e.printStackTrace();
        }
        if (connection != null) {
            System.out.println("You successfully connected to database now");
        } else {
            System.out.println("Failed to make connection to database");
        }
        Statement statement=connection.createStatement();
        statement.executeUpdate("CREATE TABLE IF NOT EXISTS message (id SERIAL PRIMARY KEY , text CHAR(30) NOT NULL) ;");
        String s=null;
        request.getParameter(s);
        if (s!=null) {
            PreparedStatement preparedStatement=connection.prepareStatement("INSERT INTO message (text) VALUES (?);");
            preparedStatement.setString(1,s);
        }
        return "end";
    }
}

Код формы:

<html> 
<head> 
    <title>Form page</title> 
</head> 
<body> 
<form method="GET" action="/end"> 
    <p><input type="text" name="text" id=""></p> 
    <p><input type="submit" name="submit"></p> 
</form> 
</body> 
</html>

код конфига сервлета:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:context="http://www.springframework.org/schema/context" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
    <context:component-scan base-package="com.Azat.Controller"/> 
 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="prefix" value="/"/> 
        <property name="suffix" value=".jsp"/> 
    </bean> 
</beans>

код web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         version="2.5"> 
    <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
 
    <servlet-mapping> 
        <servlet-name>spring</servlet-name> 
        <url-pattern>*.form</url-pattern> 
    </servlet-mapping> 
 
    <servlet> 
        <servlet-name>spring</servlet-name> 
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
        <servlet-name>spring</servlet-name> 
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value>WEB-INF/spring-servlet.xml</param-value> 
    </context-param> 
    <listener> 
        <listener-class>org.springframework.web.context.ContextLoader</listener-class> 
    </listener> 
</web-app>

Сильно не ругайте, знаю что ошибка скорее всего глупая :(

Answer 1

Что-то мне подсказывает (может быть stacktrace ошибки), что проблема где-то в этом месте

String s=null;
request.getParameter(s);

Если копать глубже, то Request не может распарсить строку запроса. Под рукой нет исходников jetty, поэтому не могу точно сказать где падает. Вы можете самостоятельно скопировать Stacktrace, и "погулять" по нему в IDEA. Копируем Stacktrace и вставляем его в Analyze -> Analyze Stactrace.

Answer 2

Я просто переписал все заново и все работает) Причем немаловажную роль играло то, что idea в параметрах запуска проекта на сервере стоял localhost:8080/xxx где xxx это варник проекта. Мелочь, но столько времени было убито зря) поэтому при переходе на /end у меня ничего не выходило. рекомендую вообще через mvn jetty:run запускать)

READ ALSO
Java, как использовать API?

Java, как использовать API?

Я написала API на php, основная цель которого — вытягивать данные из БД (в зависимости от GET параметров) и возвращать ихДопустим, оно находиться...

138
Циклический остаток от деления в JAVA?

Циклический остаток от деления в JAVA?

Мне нужно получить данные в диапазоне 0 до 5Если аргумент выходит за рамки то мне нужно циклически продолжить считать с другой стороны диапазона

199
Смещение колонок в OpenCart, Bootstrap 3

Смещение колонок в OpenCart, Bootstrap 3

работаю в Opencart 3, Bootstrap 3Сделал footer, но при разрешение sm(меньше 992) колонки смещаются и получается свободное пространство, что делаю не так?

232