课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > java教程 > MVC模式实现登录以及增删改查之登录
  • MVC模式实现登录以及增删改查之登录

    发布:昆明Java培训      来源:java教程      时间:2016-11-11

  • 昆明Java培训班的老师在这里用的不是maven项目,用的一般的web项目,所以需要用到的架包需要自己去下载添加,在项目中,一定注意环境的配置,我用的是jre1.7

    1 新建项目

    2 建立好MVC的管理包,导入对应的架包servlet

    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 <body>

    2 <form action="login" method="post">

    3用户名:<input type="text" name="tname">

    4密码:<input type="text" name="tpsw">

    5 <input type="submit" value="登录">

    6 </form>

    5 配置web.xml文件对应表单请求login

    web.xml文件

    注意:配置时<servlet-name>要在之前,否则会报错<servlet-class>

    <!--提交登录请求-->

    <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()方法,根据method请求的不同调用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层写到control层

    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 Service层

    public interface valiDateService {

    /**

    * @param tc

    * @return老师对象

    *根据用户输入值验证老师是否存在

    */

    public Teacher valiDateTeacher(Teacher tc);

    }

    10 Service层实现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);

    }

    }

    }

    推荐文章

上一篇:字节输入流与字节输出流

下一篇:java单例模式的实现方式

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56