我在这里用的不是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文件编写登陆框

 <body>
<form action="login" method="post">
用户名:<input type="text" name="tname">
密码:<input type="text" name="tpsw">
<input type="submit" value="登录">
</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);
}
}
}

MVC模式实现登录以及增删改查之登录(一)的更多相关文章

  1. asp.net下利用MVC模式实现Extjs表格增删改查

    在网上看到有很多人写extjs下的表格控件的增删改查,但是大多数都是直接从后台读取数据,很少有跟数据库进行交互的模式. 今天就来写一个这样的例子.欢迎大家交流指正. 首先简单介绍一下MVC模式,MVC ...

  2. MVC模式的学生信息增删改查

    准备:建一个名为 userdb的数据库.建一个student表,有stuid,stuname,gender三个字段.其中stuid为主键.j加入相应的驱动包,相应的JSTL标签 先看目录结构 代码: ...

  3. SSH登录与增删改查demo详解+源代码

    点击下载,测试绝对可用SSH整合框架登录加增删改查demo 下载地址:http://download.csdn.net/detail/qq_33599520/9784679   一.框架概述 spri ...

  4. 05_Elasticsearch 单模式下API的增删改查操作

    05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...

  5. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

  6. Elasticsearch学习系列之单模式下API的增删改查操作

    这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...

  7. 招新系统(jsp+servlet,实现简略前端网页注册登录+后台增删改查,分学生和管理员,Java语言,mysql数据库连接,tomcat服务器)

    生活不只是眼前的苟且,还有诗和远方. 架构说明: 要求是采用MVC模式,所以分了下面的几个包,但是由于是第一次写,可能分的也不是很清楚: 这个是后台部分的架构: 这个是前端的的展示: (那个StuLo ...

  8. MVC中的Ajax与增删改查

    自入手新项目以来,一直处于加班状态,博客也有两周没更,刚刚完成项目的两个模组,稍有喘息之机,写写关于项目中 的增删改查,这算是一个老生常谈的问题了,就连基本的教材书上都有.刚看书的时候,以为 没什么可 ...

  9. MVC中的Ajax与增删改查(一)

    自入手新项目以来,一直处于加班状态,博客也有两周没更,刚刚完成项目的两个模组,稍有喘息之机,写写关于项目中 的增删改查,这算是一个老生常谈的问题了,就连基本的教材书上都有.刚看书的时候,以为 没什么可 ...

随机推荐

  1. BAE 环境下配置 struts2 + spring + hibernate(SSH)(三)spring&hibernate

    1.在lib中加入必要的包,导入后结果如下: lib打包下载:SSH-lib.jar  (struts2.3.1.2  spring3.0.5 hibernate3.6.10.Final) 只包含必要 ...

  2. UVa1605 - Building for UN(构造法)

    UVA - 1605 Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Description ...

  3. Node.js快速入门

    Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架. 它的最新版本是:v0.12.7(在编写本教程时的版本).Node.js在官方 ...

  4. hdu 5139 Formula

    http://acm.hdu.edu.cn/showproblem.php?pid=5139 思路:这道题要先找规律,f(n)=n!*(n-1)!*(n-2)!.....1!;  不能直接打表,而是离 ...

  5. Highways poj 2485

    Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...

  6. Borg Maze poj 3026

    Description The Borg is an immensely powerful race of enhanced humanoids from the delta quadrant of ...

  7. ext3文件系统,reiserfs,xfs,jsf那种性能好点

    ext2 是一个旧的 Linux 档桉系统,没有日志功能. 启用的时间通常需要很久.目前有许多 日志型态 的档桉系统可以以更快的速度及更好的效率完成系统启用和检查. ext3 为 ext2 的日志版, ...

  8. 浅度围观SBJson

    JSON JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度, 那么,JSON到底是什么? JSON就是一串字符串 只不 ...

  9. (转载)dl,dt,dd标记在网页中要充分利用

    (转载)http://www.jzxue.com/html/css/264I6DG6.html 我们在制作网页过程中用到列表时一般会使用<ul>或者<ol>标签,很少用刑< ...

  10. 线段树(维护最大值):HDU Billboard

    Billboard Time Limit: 20000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...