@demon123
developer

Не могу разобраться с maven?

Создал проект: maven-archetype-webapp
С такой директорией
├── pom.xml
└── src
    └── main
        ├── java
             └── com
                 └── myphonebook
                       └── Phonebook.java
        ├── resources
        └── webapp
            ├── index.jsp
            └── WEB-INF
                 └── web.xml


Где Phonebook.java - это сервлет, выглядит так
package com.myphonebook;


import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Samsung
 */
@WebServlet(urlPatterns = {"/"})
public class Phonebook extends HttpServlet {

    private Connection c = null;
    private String sql = null;
    private Statement stmt = null;

    public void init(ServletConfig conf) {
        try {
            // Регистрируем JDBC драйвер
            Class.forName("org.postgresql.Driver");
            // Соединение с базой данных
            c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "123456");

            stmt = c.createStatement();

            // Создаем таблицу в базе
            sql = "CREATE TABLE PHONEBOOK "
                    + "(ID INT PRIMARY KEY   NOT NULL,"
                    + " first_name           VARCHAR(20)  NOT NULL, "
                    + " last_name            VARCHAR(20)  NOT NULL, "
                    + " PHONE                VARCHAR(20)  NOT NULL, "
                    + " EMAIL                VARCHAR(50))";
            stmt.executeUpdate(sql);

            // Задаем значения для нашей таблицы
            sql = "INSERT INTO PHONEBOOK ";
            stmt.executeUpdate(sql);
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=windows-1251");
        PrintWriter out = response.getWriter();
        try {

            // Вывод данных из базы в HTML таблицу
            sql = "SELECT * FROM PHONEBOOK";
            ResultSet rs = stmt.executeQuery(sql);

            out.println("<html>");
            out.println("<head><style>table,th,td{border:1px solid black;border-collapse:collapse;}th,td{padding:5px;text-align:left;}</style>");
            out.println("<title>phonebook</title></head>");
            out.println("<body><h1>Phonebook</h1><table>");
            out.println("<tr><th>ID</th><th>First name</th><th>Last name</th><th>PHONE</th><th>EMAIL</th></tr>");
            while (rs.next()) {
                out.println(
                        "<td>" + rs.getString(1) + "</td>"
                        + "<td>" + rs.getString(2) + "</td>"
                        + "<td>" + rs.getString(3) + "</td>"
                        + "<td>" + rs.getString(4) + "</td>"
                        + "<td>" + rs.getString(5) + "</td></tr>"
                );
            }
            out.println("</table></body>");
            out.println("</html>");

            rs.close();
        } catch (Exception ex) {
            out.println("<h1>Error: </h1>" + ex.getClass().getName() + ": " + ex.getMessage());
        } finally {
            out.close();
        }
    }
}


И вот так выглядит pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>alisher</groupId>
  <artifactId>phonebook</artifactId>
  <packaging>war</packaging>
  <version>1</version>
  <name>phonebook Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
	<dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-web-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
     </dependency>
	 <dependency>
		<groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.3-1102-jdbc41</version>
     </dependency>
  </dependencies>
  <build>
    <finalName>phonebook</finalName>
  </build>
</project>


После делал: mvn package
Потом: mvn tomcat:run localhost:8080/phonebook

Но он мне выводит index.jsp, как сделать чтобы выводил мой серлет?
И еще куда мне пихать библиотеку для JDBC PostgreSQL (postgresql-9.3-1102.jdbc41.jar)? или он сам скачает?
  • Вопрос задан
  • 2657 просмотров
Решения вопроса 1
@gurinderu
java developer
index.jsp

добавьте в web.xml
И сделайте мапинг своего сервлета на index.jsp
Да, постгрес выкачается с mvn central
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект
03 мая 2024, в 15:48
2000 руб./за проект