March 24th, 2023
Invoke SQL script during servlet initialization
Here MyContextListener is a listener which implements ServletContextListener
--- web.xml ---
proj2
createTables
yes
com.brains.MyContextListener
com.brains.MySessionListener
FirstServlet
FirstServlet
brains.FirstServlet
Login
Login
brains.Login
MyConfigDemo
MyConfigDemo
brains.MyConfigDemo
driver
com.mysql.jdbc.Driver
FirstServlet
/FirstServlet
Login
/login
MyConfigDemo
/MyConfigDemo
login.html
package com.brains;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import brains.DBInitializer;
public class MyContextListener implements ServletContextListener {
public MyContextListener() {
System.out.println("MyContextListener constructor");
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Context destroyed");
}
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Context initialized");
ServletContext servletContext = sce.getServletContext();
String param = servletContext.getInitParameter("createTables");
if(param.equals("yes")) {
String table = servletContext.getRealPath("WEB-INF/table/table.sql");
System.out.println("img: "+ table);
DBInitializer db = new DBInitializer();
db.createTables(table);
}
}
}
package brains;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DatabaseConnection {
public static Connection initialize() throws SQLException, ClassNotFoundException {
String dbDriver = "com.mysql.cj.jdbc.Driver";
String dbUrl = "jdbc:mysql://localhost:3307/";
String dbName = "servlet-demo";
String dbUsername = "root";
String dbPassword = "root";
Class.forName(dbDriver);
Connection con = DriverManager.getConnection(dbUrl+dbName,dbUsername, dbPassword);
return con;
}
}
package brains;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.StringTokenizer;
public class DBInitializer {
public void createTables(String path) {
try {
FileInputStream in = new FileInputStream(path);
byte data[] = new byte[in.available()];
in.read(data);
in.close();
StringTokenizer str = new StringTokenizer(new String(data), "/");
Connection con = DatabaseConnection.initialize();
Statement stmt = con.createStatement();
System.out.println("Creating tables...");
while(str.hasMoreElements()) {
String qr = str.nextToken();
System.out.println(qr);
if(qr.trim().equals("stop")) {
break;
}
stmt.execute(qr);
}
System.out.println("tables successfully created.");
}catch(Exception e) {
System.out.println(e);
}
}
}
package brains;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstServlet
*/
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FirstServlet() {
super();
// TODO Auto-generated constructor stub
System.out.println("constructor");
}
// @Override
// protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// // TODO Auto-generated method stub
// resp.getWriter().print("Servlet by http");
// }
// @Override
// public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// // TODO Auto-generated method stub
// res.getWriter().print("Servlet by original service");
// }
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("Servlet by doGet");
ServletConfig config = this.getServletConfig();
ServletContext context = this.getServletContext();
ServletContext servletContext = config.getServletContext();
System.out.println(config);
System.out.println(context);
System.out.println(servletContext);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
String name = req.getParameter("name");
String email = req.getParameter("email");
String mobile = req.getParameter("mobile");
String password = req.getParameter("password");
Connection con = null;
try {
con = DatabaseConnection.initialize();
PreparedStatement psc = con.prepareStatement("insert into employee values(?,?,?,?)");
psc.setString(1, name);
psc.setString(2, email);
psc.setString(3, mobile);
psc.setString(4, password);
int i = psc.executeUpdate();
if(i > 0) {
resp.sendRedirect("welcome.html");
}else {
writer.println("problem");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package brains;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyConfigDemo extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String dir = System.getProperty("user.dir");
System.out.println("Dir: "+ dir);
// String table = System.getProperty("user.dir")+"/table.sql";
response.getWriter().println(this.getServletConfig());
String name = (String) getServletContext().getAttribute("name");
String password = (String) getServletContext().getAttribute("password");
System.out.println("get: "+ name +":" + password);
response.getWriter().println(name +" : "+password);
ServletConfig config = this.getServletConfig();
System.out.println(config);
String driver = config.getInitParameter("driver");
System.out.println("driver: "+ driver);
ServletContext context = this.getServletContext();
ServletContext servletContext = config.getServletContext();
System.out.println(context);
System.out.println(servletContext);
String abcd = context.getInitParameter("abcd");
System.out.println("abcd: "+ abcd);
Enumeration params = context.getInitParameterNames();
while(params.hasMoreElements()) {
String element = params.nextElement();
System.out.println("element: "+ element +":"+context.getInitParameter(element));
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println(this.getServletConfig());
String name = req.getParameter("name");
String password = req.getParameter("password");
System.out.println("post: "+ name +":" + password);
resp.getWriter().println(name +" : "+password);
}
}
package brains;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class Login
*/
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
String name = request.getParameter("name");
String password = request.getParameter("password");
ServletContext servletContext = this.getServletContext();
servletContext.setAttribute("name", name);
servletContext.setAttribute("password", password);
try {
Connection conn = DatabaseConnection.initialize();
PreparedStatement ps = conn.prepareStatement("select * from employee where name = ? and password = ?");
ps.setString(1, name);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
HttpSession session = request.getSession();
response.sendRedirect("MyConfigDemo");
}else {
response.getWriter().println("404 error");
RequestDispatcher rd = request.getRequestDispatcher("login.html");
rd.include(request, response);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
CREATE TABLE employee (
name varchar(255),
email varchar(255),
mobile varchar(255),
password varchar(255)
)
/
CREATE TABLE persons (
lastName varchar(255),
firstName varchar(255),
address varchar(255),
city varchar(255)
)
Insert title here
Login here
Register here
Insert title here
It works
Login here
Insert title here
Welcome
Leave a Reply