여기서 사용하는 것은 Maven 프로젝트가 아니고 일반 웹 프로젝트이므로 필요한 프레임워크 패키지를 다운로드하여 추가해야 합니다. jre1.7 사용
1 새 프로젝트 생성
2 MVC 관리 패키지 설정 및 해당 랙 패키지 서블릿 가져오기
3 데이터베이스에 해당하는 Teacher.java 엔티티 클래스를 설정합니다
public class Teacher { private int tid; private String tname; private String tpsw; public int getTid() { return tid; } public void setTid(int tid) { this.tid = tid; } public String getTname() { return tname; } public void setTname(String tname) { this.tname = tname; } public String getTpsw() { return tpsw; } public void setTpsw(String tpsw) { this.tpsw = tpsw; } public Teacher(String tname, String tpsw) { super(); this.tname = tname; this.tpsw = tpsw; } public Teacher(int tid, String tname, String tpsw) { super(); this.tid = tid; this.tname = tname; this.tpsw = tpsw; } public Teacher() { super(); } }
4 WebContent에 새 login.jsp 파일을 생성하고 로그인 상자를 작성합니다
1
2
5 양식 요청 로그인에 해당하는 web.xml 파일 구성
web.xml 파일
참고: 구성할 때
<!-- 提交登录请求 --> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.zr.controller.LoginController</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping>
6 해당 요청 엔터티 클래스를 작성합니다. LoginController.java: HttpServlet을 상속하고 다시 작성합니다. doget() 및 dopost() 메서드를 사용하고 다른 메서드 요청에 따라 doget을 호출합니다. 또는 dopost 메서드
LoginController.java
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.zr.model.Teacher; import com.zr.service.valiDateService; import com.zr.serviceIm.valiDateServiceImpl; public class LoginController extends HttpServlet{ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取前台form表单的input输入框 String tname=req.getParameter("tname"); String tpsw=req.getParameter("tpsw"); Teacher tc=new Teacher(); tc.setTname(tname); tc.setTpsw(tpsw); valiDateService vds=new valiDateServiceImpl(); Teacher t= vds.valiDateTeacher(tc); HttpSession session=req.getSession(); session.setAttribute("teacher", t); if (t!=null) { //返回的不是空值,重定向到登录成功界面 req.getRequestDispatcher("main.jsp").forward(req, resp); } else { //返回空值,请求转发到登录界面 resp.sendRedirect("login.jsp"); } } }
7 배경 dao 레이어에서 제어 계층
public interface TeacherDao { /** * 验证老师是否存在 * @param tc * @return */ public Teacher validateTeacher(Teacher tc); }
8.1 데이터베이스 JDBCUtil과의 연결을 설정하는 캡슐화 클래스를 작성합니다. java
package JDBCUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtil { //1.数据库地址 (根据不同的数据标准是不一样) private final static String DBURL = "jdbc:mysql://localhost:3306/student_crm?useUnicode=true&characterEncoding=UTF8"; //2.设置用户和密码 private final static String USERNAME = "root"; private final static String PASSWORD = "root"; //3.设置驱动名称 (根据不同的数据标准是不一样) private final static String DBDRIVER = "com.mysql.jdbc.Driver"; /** * 获取数据库连接 * @return 返回数据库连接 */ public static Connection getConnection(){ Connection con = null; try { Class.forName(DBDRIVER); con = DriverManager.getConnection(DBURL, USERNAME, PASSWORD); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } //关闭连接 public static void closeJDBC(Statement st,Connection con) throws SQLException{ if(st!=null){ st.close(); } if(con!=null){ con.close(); } } }
8.2 Dao 계층 구현
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.zr.dao.TeacherDao; import com.zr.model.Teacher; import JDBCUtil.JDBCUtil; public class TeacherDaoImpl implements TeacherDao{ /** * 输入老师的对象,返回老师对象 * @param args */ public Teacher validateTeacher(Teacher tc) { Teacher teacher=new Teacher(); //sql语句 StringBuffer sql=new StringBuffer("select * from teacher where tname=? and tpsw=?"); //获取数据库连接 Connection con=JDBCUtil.getConnection(); try { PreparedStatement pst=con.prepareStatement(sql.toString()); pst.setString(1, tc.getTname()); pst.setString(2, tc.getTpsw()); //返回一个结果集 ResultSet rs=pst.executeQuery(); if (rs.next()) { //把结果集里面的数据放入对应的teacher对象 teacher=new Teacher(rs.getInt("tid"),rs.getString("tname"),rs.getString("tpsw")); } } catch (SQLException e) { e.printStackTrace(); } return teacher; } }
9 서비스 레이어
public interface valiDateService { /** * @param tc * @return 老师对象 * 根据用户输入值验证老师是否存在 */ public Teacher valiDateTeacher(Teacher tc); }
10 서비스 레이어 구현 ServiceImpl.java
import com.zr.dao.TeacherDao; import com.zr.daoIm.TeacherDaoImpl; import com.zr.model.Teacher; import com.zr.service.valiDateService; public class valiDateServiceImpl implements valiDateService{ public Teacher valiDateTeacher(Teacher tc) { //父类的引用指向子类的对象,父类可以直接调用子类的方法 TeacherDao teacherDao=new TeacherDaoImpl(); //调用dao层的方法验证存在 Teacher teacher=teacherDao.validateTeacher(tc); return teacher; } }
11 com.zr.controller 레이어
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.zr.model.Teacher; import com.zr.service.valiDateService; import com.zr.serviceIm.valiDateServiceImpl; public class LoginController extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取前台form表单的input输入框 String tname = req.getParameter("tname"); String tpsw = req.getParameter("tpsw"); // 将前台对象放入tc对象,作为输入参数 Teacher tc = new Teacher(); tc.setTname(tname); tc.setTpsw(tpsw); // 调用Service层的方法传入tc对象,并用t接收返回结果 valiDateService vds = new valiDateServiceImpl(); Teacher t = vds.valiDateTeacher(tc); // 获取JSP作用域session,将老师t对象放入session HttpSession session = req.getSession(); int a = t.getTid();//最好根据返回的老师的id进行判断 if (a != 0) { // 返回的有id,重定向到登录成功界面 req.getRequestDispatcher("main.jsp").forward(req, resp); session.setAttribute("teacher", t); } else { // 返回空值,请求转发到登录界面 req.getRequestDispatcher("login.jsp").forward(req, resp); } } }