After much trial and error, I was finally able to complete a job portal using Maven project on Eclipse and have integrated MySQL. I am stuck on one more issue that I would appreciate any guidance on (this is my first time working on a project like this).
There are two views, a student view and a recruiter view. Once the user signs up and logs in, they will see their respected view. The part where I am now stuck on is I am not sure how to add a constraint so that when a user signs up, they must enter an email ending in .edu. I know this will probably utilize the String.endsWith() method, but I am unsure of where to place it.
Here is my RegisterServlet.java file:
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.DB.DBConnect;
import com.dao.UserDAO;
import com.entity.User;
@WebServlet("/add_user")
public class RegisterServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
String name = req.getParameter("name");
String qua = req.getParameter("qua");
String email = req.getParameter("email");
String ps = req.getParameter("ps");
UserDAO dao = new UserDAO(DBConnect.getConn());
User u = new User(name, email, ps, qua, "User");
boolean f = dao.addUser(u);
HttpSession session = req.getSession();
if(f) {
session.setAttribute("succMsg", "Registeration Complete!");
resp.sendRedirect("signup.jsp");
} else {
session.setAttribute("succMsg", "Registeration Not Complete");
resp.sendRedirect("signup.jsp");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
and here is my signup.jsp file:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%@include file="all_component/all_css.jsp"%>
</head>
<body style="background-color: #f7f7f7;">
<%@include file="all_component/navbar.jsp"%>
<div class="container-fluid">
<div class="row p-4">
<div class="col-md-4 offset-md-4">
<div class="card">
<div class="card-body">
<div class="text-center">
<i class="fa fa-user-plus fa-2x" aria-hidden="true"></i>
<h5>Register Now</h5>
</div>
<c:if test="${not empty succMsg }">
<h4 class="text-center text-success">${succMsg }</h4>
<c:remove var="succMsg" />
</c:if>
<form action="add_user" method="post">
<div class="form-group">
<label>Enter Full Name</label> <input type="text" required="required" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="name">
</div>
<div class="form-group">
<label>Student or Recruiter?</label> <input type="text" required="required" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="qua">
</div>
<div class="form-group">
<label>Enter Email</label> <input type="text" required="required" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Enter Password</label> <input type="password" required="required" class="form-control" id="exampleInputPassword1" name="ps">
</div>
<button type="submit" class="btn btn-primary badge-pill btn-block">Register</button>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
And this is my UserDAO.java code:
package com.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.entity.User;
public class UserDAO {
private Connection conn;
public UserDAO(Connection conn) {
super();
this.conn = conn;
}
public boolean addUser(User u) {
boolean f = false;
try {
String sql = "insert into user(name, qualification, email, password, role) values(?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, u.getName());
ps.setString(2, u.getQualification());
ps.setString(3, u.getEmail());
ps.setString(4, u.getPassword());
ps.setString(5, "user");
int i = ps.executeUpdate();
if(i == 1) {
f = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return f;
}
public User login(String em, String psw) {
User u = null;
try {
String sql = "select * from user where email=? and password=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, em);
ps.setString(2, psw);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
u = new User();
u.setId(rs.getInt(1));
u.setName(rs.getString(2));
u.setQualification(rs.getString(3));
u.setEmail(rs.getString(4));
u.setPassword(rs.getString(5));
u.setRole(rs.getString(6));
}
} catch (Exception e) {
e.printStackTrace();
}
return u;
}
}
I believe in RegisterServlet, I can do something like:
if(f && email.endsWith(".edu") {
session.setAttribute("succMsg", "Registeration Complete!");
resp.sendRedirect("signup.jsp");
} else {
session.setAttribute("succMsg", "Registeration Not Complete");
resp.sendRedirect("signup.jsp");
}
But although I get a "registration not complete" alert, the user still goes into the database.