关于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. SQL insert

    INSERT INTO 插入语句 INSERT INTO语句用于在表中插入新记录. 可以用两种方式编写INSERT INTO语句. 第一种方法指定列名和要插入的值: 1 2 INSERT INTO t ...

  2. PHP利用模板消息无限制向用户推送消息

    <?php //获取微信access_token function getaccess_token(){ //appid与appsecret改成你自己的 $appid = '自己的appid'; ...

  3. Android人脸检测1(静态图片)

    搭建Android人脸识别环境花了很长时间(可以查看之前的文章),解决Android开发中的杂七杂八小问题也耗时不少. 今天记录一下,点击选择照片或者拍照上传照片进行人脸检测的小demo. (andr ...

  4. Redis常见面试题

    介绍:Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API的非关系型数据库. 传统数据 ...

  5. thinkphp的静态缓存,数据缓存,快速缓存,查询缓存

    // 静态缓存 // 'HTML_PATH' 缓存目录,这是个常量不是配置项,在入口文件中定义 // 'HTML_CACHE_ON'     =>    true, // 开启静态缓存 'HTM ...

  6. Beta(3/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  7. NOIP2009 t3 最优贸易

    题目传送门:洛谷P1073 dalao们都用的tarjan啊拓扑排序啊之类的玩意儿,我这个蒟蒻不会,只想到了极其暴力的分层图最短路 设三个状态 0表示没有发生任何买卖的情况 1表示买了没有卖的情况 2 ...

  8. windows安装nexus3

    1.下载nexus3 https://www.sonatype.com/download-oss-sonatype 2.解压文件D:\javatool\ 3.在path中配置环境变量 D:\javat ...

  9. Android源代码编译过程及指令

    编译Android源代码分为两种情况: 1. 完整编译源码: ./mk_aliphone.sh --> 完整编译脚本 --> 6735  输入对应的编号 --> userdebug ...

  10. docker修改容器信息,打包等

    https://blog.csdn.net/x6_9x/article/details/72891404