MVC模式实现登录以及增删改查之登录(一)
我在这里用的不是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模式实现登录以及增删改查之登录(一)的更多相关文章
- asp.net下利用MVC模式实现Extjs表格增删改查
在网上看到有很多人写extjs下的表格控件的增删改查,但是大多数都是直接从后台读取数据,很少有跟数据库进行交互的模式. 今天就来写一个这样的例子.欢迎大家交流指正. 首先简单介绍一下MVC模式,MVC ...
- MVC模式的学生信息增删改查
准备:建一个名为 userdb的数据库.建一个student表,有stuid,stuname,gender三个字段.其中stuid为主键.j加入相应的驱动包,相应的JSTL标签 先看目录结构 代码: ...
- SSH登录与增删改查demo详解+源代码
点击下载,测试绝对可用SSH整合框架登录加增删改查demo 下载地址:http://download.csdn.net/detail/qq_33599520/9784679 一.框架概述 spri ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- Elasticsearch 单模式下API的增删改查操作
<pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...
- Elasticsearch学习系列之单模式下API的增删改查操作
这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...
- 招新系统(jsp+servlet,实现简略前端网页注册登录+后台增删改查,分学生和管理员,Java语言,mysql数据库连接,tomcat服务器)
生活不只是眼前的苟且,还有诗和远方. 架构说明: 要求是采用MVC模式,所以分了下面的几个包,但是由于是第一次写,可能分的也不是很清楚: 这个是后台部分的架构: 这个是前端的的展示: (那个StuLo ...
- MVC中的Ajax与增删改查
自入手新项目以来,一直处于加班状态,博客也有两周没更,刚刚完成项目的两个模组,稍有喘息之机,写写关于项目中 的增删改查,这算是一个老生常谈的问题了,就连基本的教材书上都有.刚看书的时候,以为 没什么可 ...
- MVC中的Ajax与增删改查(一)
自入手新项目以来,一直处于加班状态,博客也有两周没更,刚刚完成项目的两个模组,稍有喘息之机,写写关于项目中 的增删改查,这算是一个老生常谈的问题了,就连基本的教材书上都有.刚看书的时候,以为 没什么可 ...
随机推荐
- PHP时间戳和日期相互转换
在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明. 1.php中时间转换函数 strtotime ...
- SAE 安装未包含的第三方依赖包
如何使用virtualenv管理依赖关系 当你的应用依赖很多第三方包时,可以使用virtualenv来管理并导出这些依赖包,流程如下: 首先,创建一个全新的Python虚拟环境目录ENV,启动虚拟环境 ...
- function field , store={}...
def _get_product_state(self,cr,uid,ids,fields,arg=None,context=None): res={} dic=dict( self.pool.get ...
- 安卓SDK Manager自动管理各种包
安卓ADT不能自动从google下载sdk等各种工具 修改hosts文件下载成功 210.242.125.89 dl-ssl.google.com 210.242.125.89 dl.google ...
- iOS应用开发:什么是ARC?
iOS应用开发:什么是ARC? 博客分类: Phone / IOS / Objective-C / Swift ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic R ...
- 工作总结:将电脑中的ARP缓存清空黑屏命令
ARP -d 将电脑中的ARP缓存清空ARP-a 查看arp缓存arp-s ip与mac绑定
- SCVMM更换数据库,如何搞?
因为SCVMM和SQL不是集成在同一台机器上的. 所以,当SQL换机器或是换名字后,SCVMM就不能启动了. 并且MS没提供直观的更改数据库连接的工具,只是在安装的时候有选项. 网上找了方法,修改注册 ...
- IIC总线协议
前言:年前给老师做个红外抄表系统,,现在对当中用到的一些模块总结一下. 1.只有在总线空闲时才允许启动数据传送. 2.在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变.时钟线 ...
- delphi OnMouseLeave 事件不灵敏及解决之道(使用TrackMouseEvent函数进行加强)
http://topic.csdn.net/t/20020104/09/456913.html CM_MouseLeave消息好象不太灵敏,当鼠标快速移出窗体时,就收不到这个消息,请问大家有什么好办法 ...
- mysql 安装补充
1:假如下载的文件名为:mysql-5.0.45.tar.gz 2:假如copy到 /usr/local下 3:groupadd mysql #添加mysql组 4:useradd -g mysql ...