add_student
For an example I added username ,first name and last name to student table and get auto incremented primay key id and save email and telephone to student_contact table.DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `add_student`(p_username varchar(20),p_firstname varchar(20),p_lastname varchar(20),p_email varchar(20),p_telephone varchar(20)) BEGIN DECLARE stu_id int(11); START TRANSACTION; INSERT INTO student(username,first_name,last_name) VALUES(p_username,p_firstname,p_lastname); SELECT id FROM student WHERE username=p_username INTO stu_id; INSERT INTO student_contact(stu_id,email,telephone) VALUES(stu_id,p_email,p_telephone); COMMIT; END
search_students
This sp returns student records.DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `search_students`(p_first_name varchar(20)) BEGIN SELECT * FROM student WHERE first_name LIKE concat(p_first_name,'%'); END
get_firstname_by_username
This sp uses input parameter and out put parameterDELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `get_firstname_by_username`(p_username varchar(20),OUT p_firstname varchar(20)) SELECT first_name INTO p_firstname FROM student WHERE username = p_username
StudentDAO.java
call stored procedures.package codesstore.dao; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import codesstore.db.JDBCConnector; import codesstore.domain.Student; public class StudentDAO { public void addStudent(Student student) { try { Connection con = JDBCConnector.getConnection(); CallableStatement proc = con .prepareCall("{ call add_student(?, ?, ?, ?, ?) }"); proc.setString(1, student.getUsername()); proc.setString(2, student.getFirstName()); proc.setString(3, student.getLastName()); proc.setString(4, student.getEmail()); proc.setString(5, student.getTelephone()); proc.execute(); } catch (SQLException e) { e.printStackTrace(); } } public List<Student> searchStudents(String firstName) { List<Student> students = new ArrayList<Student>(); try { Connection con = JDBCConnector.getConnection(); CallableStatement proc = con .prepareCall("{ call search_students(?) }"); proc.setString(1, firstName); proc.execute(); ResultSet rs = proc.getResultSet(); while (rs.next()) { Student s = new Student(); s.setFirstName(rs.getString("first_name")); s.setLastName(rs.getString("last_name")); s.setUsername(rs.getString("username")); students.add(s); } } catch (SQLException e) { e.printStackTrace(); } return students; } public String getFirstNameByUsername(String username) { String firstName = null; try { Connection con = JDBCConnector.getConnection(); CallableStatement proc = con .prepareCall("{ call get_firstname_by_username(?,?) }"); proc.setString(1, username); proc.registerOutParameter(2, java.sql.Types.VARCHAR); proc.execute(); firstName = proc.getString(2); } catch (SQLException e) { e.printStackTrace(); } return firstName; } }
Other files
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>SPtesting</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>StudentServlet</display-name> <servlet-name>StudentServlet</servlet-name> <servlet-class>codesstore.controller.StudentServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>StudentServlet</servlet-name> <url-pattern>/StudentServlet</url-pattern> </servlet-mapping> </web-app>
index.php
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Stored Procedure - codesstore.blogspot.com</title> </head> <body> <form action="StudentServlet" method="post"> <table> <tr> <td colspan="2">Personal details </td> </tr> <tr> <td>Username</td> <td><input name="username" type="text"/></td> </tr> <tr> <td>First Name</td> <td><input name="fname" type="text"/></td> </tr> <tr> <td>Last Name</td> <td><input name="lname" type="text"/></td> </tr> <tr> <td colspan="2">Contact details </td> </tr> <tr> <td>Email</td> <td><input name="email" type="text"/></td> </tr> <tr> <td>Telephone</td> <td><input name="telephone" type="text"/></td> </tr> <tr> <td></td> <td><input type="submit" value="Add" name="action"> </td> </tr> </table> </form> Search by First name <form action="StudentServlet" method="post"> <input name="fname" type="text"/> <input type="submit" value="Search" name="action"> </form> Get first name by Username <form action="StudentServlet" method="post"> <input name="username" type="text"/> <input type="submit" value="GetFirstName" name="action" > </form> <c:forEach items="${students}" var="student"> ${student.username} ${student.firstName} ${student.lastName} <br/> </c:forEach> <c:if test="${firstName != null}"> ${firstName} </c:if> </body> </html>
StudentServlet.java
package codesstore.controller; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import codesstore.dao.StudentDAO; import codesstore.domain.Student; public class StudentServlet extends HttpServlet { private static final long serialVersionUID = 1L; public StudentServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if (action != null && action.equals("Search")) { String firstName = request.getParameter("fname"); StudentDAO studentDAO = new StudentDAO(); List<Student> students = studentDAO.searchStudents(firstName); request.setAttribute("students", students); RequestDispatcher rd = request.getRequestDispatcher("index.jsp"); rd.forward(request, response); } else if (action != null && action.equals("GetFirstName")) { String username = request.getParameter("username"); StudentDAO studentDAO = new StudentDAO(); String firstName = studentDAO.getFirstNameByUsername(username); request.setAttribute("firstName", firstName); RequestDispatcher rd = request.getRequestDispatcher("index.jsp"); rd.forward(request, response); } else if (action != null && action.equals("Add")) { String userName = request.getParameter("username"); String firstName = request.getParameter("fname"); String lastName = request.getParameter("lname"); String email = request.getParameter("email"); String telephone = request.getParameter("telephone"); Student student = new Student(); student.setUsername(userName); student.setFirstName(firstName); student.setLastName(lastName); student.setEmail(email); student.setTelephone(telephone); StudentDAO studentDAO = new StudentDAO(); studentDAO.addStudent(student); RequestDispatcher rd = request.getRequestDispatcher("index.jsp"); rd.forward(request, response); } } }
Student.java
package codesstore.domain; public class Student { String username; String firstName; String lastName; String email; String telephone; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } }
JDBCConnector.java
package codesstore.db; import java.sql.Connection; import java.sql.DriverManager; import java.util.logging.Level; import java.util.logging.Logger; public class JDBCConnector { private static Connection con; public static Connection getConnection() { if (con == null) { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager. getConnection("jdbc:mysql://localhost:3306/mydbsp", "root", "123"); } catch (Exception ex) { Logger.getLogger(JDBCConnector.class.getName()).log(Level.SEVERE, null, ex); } } return con; } }
sql tables
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(45) DEFAULT NULL, `last_name` varchar(45) DEFAULT NULL, `username` varchar(45) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;
CREATE TABLE `student_contact` ( `stu_id` int(11) NOT NULL, `email` varchar(20) DEFAULT NULL, `telephone` varchar(20) DEFAULT NULL, PRIMARY KEY (`stu_id`), CONSTRAINT `FK_student_personal_1` FOREIGN KEY (`stu_id`) REFERENCES `student` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
File structure in eclipse.
No comments:
Post a Comment