MVC案例及Servlet初尝(实现登录)
什么是MVC?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其个人把MVC理解为一种编程思想,以优化项目代码,让代码的模块各司其职。
首先对本次小案例做个小分析:
代码:
先看一下数据库的信息:
login.jsp(就是一个简单的表单):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="login" method="post">
用户名:<input type="text" name="uname">
密码:<input type="password" name="upwd">
<input type="submit" value="登录">
</form>
</body>
</html>
login.java(在Servlet中,进行对数据的处理):
package ServletDome;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import LoginDao.Login;
import User.Person;
public class login extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理登录请求
request.setCharacterEncoding("utf-8");
String name=request.getParameter("uname");
String pwd=request.getParameter("upwd");
Person person=new Person(name,pwd);
Login login=new Login();
int num=login.login(person);
if(num>0)
{
response.sendRedirect("welcome.jsp");
}else if(num==0)
{
response.sendRedirect("login.jsp");
}
else if(num<0)
{
response.sendRedirect("break.jsp");;
}
System.out.println(num);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
LoginDao.java:(具体实现插叙功能的模块)
package LoginDao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import User.Person;
public class LoginDao
{
public int login(Person person)
{
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/zxy?&useSSL=false&serverTimezone=UTF-8&useSSL=false&serverTimezone = GMT";
String username = "root";
String password = "zxy170518.";
Connection connection = null;//链接数据库
PreparedStatement pstmt=null;//执行sql语句
ResultSet rs=null;//存放结果集(查询使用)
try
{
Class.forName(driver);//加载数据库驱动
connection=DriverManager.getConnection(url,username,password);
if(!connection.isClosed())
{System.out.print("数据库连接成功!");}//验证是否连接成功
String sql="select * from tb_test where name = ? and password=?";
pstmt=connection.prepareStatement(sql);//对sql语句进行预编译
pstmt.setString(1, person.getName());
pstmt.setString(2, person.getPassword());
rs=pstmt.executeQuery();
if(rs.next())
{
return 1;
}
else if(rs.next()==false)
{
return 0;
}
}catch(ClassNotFoundException e)
{
e.printStackTrace();
return -1;
}catch(SQLException e)
{
e.printStackTrace();
return -1;
}finally
{
try
{
if(rs!=null)
{
rs.close();
}
if(pstmt!=null)
{
pstmt.close();
}
if(connection!=null)
{
connection.close();
}
}catch(SQLException e)
{
e.printStackTrace();
return -1;
}catch(Exception e) {
e.printStackTrace();
return -1;
}
}
return 0;//默认登陆失败
}
}
Person.java(对数据进行处理,打包成一个Person对象):
package User;
public class Person {
private String name;
private String password;
public Person(String name , String password)
{
this.name=name;
this.password=password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
运行结果:
登陆失败就不贴了,因为程序自己定义的就是如果登录失败,就直接跳到登陆界面继续登录;
welcom.jsp和break.jsp就不贴了,只是验证登录结果用的。总的来说,例子很简单,也用到了之前学习的JavaBean的内容,现在加上MVC模式和Servlet,得以加深一下对MVC的理解和Servlet的初步使用。