关于MVC模式的简单解释

M Model,模型层,例如登录实例中,用于处理登录操作的类;

V View,视图层,用于展示以及与用户交互。使用html、js、css、jsp、jQuery等前端技术实现;

C Controller,控制器,接受视图层的请求,将请求跳转到对应的模型进行处理,模型层处理完毕后,再将结果返回给请求处。这里用Servlet实现控制器。

实现过程分析

用户再视图层输入用户名以及密码点击提交,向控制器发出请求

控制器(Servlet)接受请求,将接受到的用户名以及密码转给模型层

模型层依据用户名和密码在数据库中进行查询,将操作结果返回给控制器

控制器经过判断返回给用户登录结果。

代码实现

项目结构图

视图层实现(index.jsp)


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="LoginServlet" method="post">
Name:<input type="text" name="uname"><br>
Pass:<input type="password" name="upwd"><br>
<input type="submit" value="Login"><br>
</form>
</body>
</html>

控制器层实现(LoginServlet)


package com.ajy.Servlet; import com.ajy.Model.LoginDao;
import com.ajy.Entity.User; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; //控制器层
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理post方式登录请求
request.setCharacterEncoding("utf-8");
String uname = request.getParameter("uname");
String upwd = request.getParameter("upwd");
User user = new User(uname,upwd); response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
int rs = LoginDao.Login(user);
if(rs==-1){
out.println("系统错误");
}else if(rs==0){
out.println("用户名或密码错误");
}else{
out.println("登录成功");
}
}
}

模型层实现(LoginDao)


package com.ajy.Model; import com.ajy.Entity.User; import java.sql.*; //模型层,用于处理登录操作
public class LoginDao {
private static String DBUname = "root";
private static String DBUpwd = "121181";
private static String URL="jdbc:mysql://localhost:3306/anjiyubase?&serverTimezone=UTC&useSSL=false"; public static int Login(User user){ Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int count = 0;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection(URL,DBUname,DBUpwd);
pstmt = con.prepareStatement("select count(*) from users where uanme = ? and upwd = ?");
pstmt.setString(1,user.getUserName());
pstmt.setString(2,user.getUserPassword());
rs = pstmt.executeQuery();
if(rs.next()){
count = rs.getInt(1);
}
} 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 (con!=null)con.close();
} catch (SQLException e) {
e.printStackTrace();
return -1;
}
} if (count==0){
return 0;
}else{
return 1;
}
}
}

用户实例(User)


package com.ajy.Entity; public class User {
private int id;
private String UserName;
private String UserPassword; public User(String UserName, String UserPassword){
this.UserName=UserName;
this.UserPassword=UserPassword;
} public User(int id, String UserName, String UserPassword){
this.id=id;
this.UserName=UserName;
this.UserPassword=UserPassword;
}
public String getUserName() {
return UserName;
} public void setUserName(String userName) {
UserName = userName;
} public String getUserPassword() {
return UserPassword;
} public void setUserPassword(String userPassword) {
UserPassword = userPassword;
}
}

web.xml中的内容


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.ajy.Servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>

数据库

基于Servlet的MVC模式用户登录实例的更多相关文章

  1. mybatis 和servlet使用MVC实现用户登录,注册,退出

    普通实现: USerMapper.java: package com.bjsxt.mapper; import org.apache.ibatis.annotations.Param; import ...

  2. Django:用户登录实例

    Django:用户登录实例 一.源代码 1,login.html代码(登录界面): <!DOCTYPE html> <html lang="zh-CN"> ...

  3. SSH——基于BaseDao和BaseAction实现用户登录

           基于BaseDao和BaseAction实现用户登录  1. 首先修改login.jsp页面,点击登录按钮,提交表单 <a onclick="document.forms ...

  4. JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  5. Servlet——简单用户登录实例+http协议解析

    编写项目.用户登录系统1.0版本号 登录界面Servlet: package com.gavin.view; import java.io.IOException; import java.io.Pr ...

  6. MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用

    前言当我们访问某个网站的时候需要检测用户是否已经登录(通过Session是否为null),我们知道在WebForm中可以定义一个BasePage类让他继承System.Web.UI.Page,重写它的 ...

  7. Servlet Session MVC模式

    一   什么是Session 当首次使用session时,服务器端要创建session,session是保存在服务器端,而给客户端的session的id(一个cookie中保存了sessionId). ...

  8. centos7 设置grub密码及单用户登录实例

    centos7与centos6在设置grub密码的操作步骤上有很大的差别,特此记录供以后查用 grub加密的目的: 防止不法分子利用单用户模式修改root密码 给grub加密可以采用明文或者加密的密文 ...

  9. [转载]MVC中单用户登录

    转自:http://www.cnblogs.com/firstcsharp/archive/2013/05/19/3087481.html 把下面这段代码放在登录用户验证以后:   //用户登录验证通 ...

随机推荐

  1. cc.Component 的使用

    1.组件入口函数,常有的:onLoad,start,update //组件在加载的时候运行,并且场景的初始化工作已经完成 onLoad() { }, //组件在第一次update调用之前调用 star ...

  2. 洛古P1036 选数 题解

    [我是传送门] 这是一道很经典的深搜与回溯(难度一般) 可是就这个"普及-" 让本蒟蒻做了一晚上+半个上午(实际我不会深搜回溯,全靠框架+去重); 下面让我分享下本蒟蒻的(全排列+ ...

  3. golang map 读写锁与深度拷贝的坑

    0X01 golang中,map(字典)无法并发读写 简单来说,新建万条线程对同一个map又读又写,会报错. 为此,最好加锁,其实性能影响并不明显. type taskCache struct{ sy ...

  4. HDU.5385.The path(构造)

    题目链接 最短路构造题三连:这道题,HDU4903,SRM590 Fox And City. \(Description\) 给定一张\(n\)个点\(m\)条边的有向图,每条边的边权在\([1,n] ...

  5. mysql查询用,或#隔开的字段

    假如,user表有一字段 pids,pids字段是用#(实际用逗号合适)隔开的师傅id.现在查询师傅id:168的徒弟有哪些(徒弟.徒孙.徒孙的徒弟.徒孙的徒孙....) sql:  select * ...

  6. oracle直接读写ms sqlserver数据库(一)如何下载oracle database gateway for sqlserver

    想从Oracle实时同步数据到Ms Sqlserver,需要在Oracle里面直连Sqlserver进行数据的读写,可以在Oracle服务器上安装oracle database gateway for ...

  7. EasyUI 分页 偶遇 问题

    当 存在大量 重复 数据字段的 时候 entity.AsNoTracking().ToList().Skip((page.pageNumber - 1) * page.rows).Take(page. ...

  8. js图片预加载与延迟加载

    图片预加载的机制原理:就是提前加载出图片来,给前端的服务器有一定的压力. 图片延迟加载的原理:为了缓解前端服务器的压力,延缓加载图片,符合条件的时候再加载图片,当然不符合的条件就不加载图片.​ 预加载 ...

  9. yii 1.x 添加 rules 验证url数组

    public function rules() { return CMap::mergeArray( parent::rules(),array( array('third_link', 'urlAr ...

  10. NodeJS笔记(五) 使用React Native 创建第一个 Android APP

    参考:原文地址 几个月前官方推出了快速创建工具包,由于对React Native不熟悉这里直接使用这2个工具包进行创建 1. create-react-native-app(下文简称CRNA): 2. ...