Javaweb项目实践MVC入门到精通

2023-05-16

Javaweb项目实践MVC入门到精通

  • 目标
  • 配置环境
  • 实体模型 user Dao的实现
  • 实体模型 Model
  • View
  • Controller :转发任务,路由器的功能
  • 安全sql注入
  • 常见问题

目标

这个目标是写一个MVC模型。通过典型的增删改查的操作实现一个简单的web系统。
M:(Model) 模型 : 应用程序的核心功能,管理这个模块中用的数据和值(bean,dao);
V(View )视图: 视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观;(jsp/html)
C(Controller)控制器: 对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。
(servlet/service)

MVC是Model、View、Controller的缩写,分别代表Web应用程序中的三种职责:

模型——用于存储数据以及处理用户请求的业务逻辑。
视图——向控制器提交数据,显示模型中的数据。
控制器——根据视图提出的请求,判断将请求和数据交给哪个模型处理,处理后的有关结果交给哪个视图更新显示。

基于Servlet的MVC模式的具体实现如下:
模型:一个或多个JavaBean对象,用于存储数据(实体模型,由JavaBean类创建)和处理业务逻辑(业务模型,由一般的Java类创建)。
视图:一个或多个JSP页面,向控制器提交数据和为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据。

控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的JavaBean,并将处理结果存放到实体模型JavaBean中,输出给视图显示。

一个简单的MVC项目:MVC实现用户登录验证程序

其中包括:

实体模型User

业务模型UserCheck,

控制器LoginCheckServlet

两个视图页面。(登陆页面和登录成功)

配置环境

大家有时间可以试试,会遇到各种问题哦,心态要好!!!
IDEA,教育版,用自己的edu结尾的学校的邮箱注册。
tomcat10.0.21
jdk14
IdeaIU2020.3.2

实体模型 user Dao的实现

public User find(String userName, String userPwd) {
        try{
        	User user = null;
        	Conn conn = new Conn();
			con = conn.getCon();```
	 	    //sql = con.createStatement();
			//rs = sql.executeQuery("SELECT * FROM t_user WHERE psw="+userPwd+" 
			//and name='"+userName+"'");
			
			
			PreparedStatement pstmt = con.prepareStatement("select * from t_user where name=? and psw=?");
			pstmt.setString(1,userName );
			pstmt.setString(2, userPwd);
			rs = pstmt.executeQuery();  
			
			if (rs.next()) {
				user = new User();
				user.setName(userName);
				user.setAge(rs.getInt("age"));
				user.setSex(rs.getString("sex"));
				user.setUserID(rs.getInt("userID"));
				user.setPwd(rs.getString("psw"));
			}
            con.close();
            return user;
        
        }catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

实体模型 Model

package domain;

public class User {
	private int userID;
	private String name;
	private String pwd;
	private String sex;
	private int age;
	
	public int getUserID() {
		return userID;
	}
	
	public void setUserID(int userID) {
		this.userID = userID;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
}

View

Controller :转发任务,路由器的功能

package controller;

import domain.User;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import service.IUserService;
import service.impl.UserServiceImpl;

import java.io.IOException;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/LoginDataRec")
public class LoginDataReceive extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginDataReceive() {
        super();
        // TODO Auto-generated constructor stubuse
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		request.setCharacterEncoding("utf-8");
//		response.setCharacterEncoding("utf-8");
//		response.getWriter().append("Served at: ").append(request.getContextPath());
//		PrintWriter out=response.getWriter();//
		String userName = request.getParameter("username");
		String userPwd = request.getParameter("password");

		//UserServiceImpl userService = new UserServiceImpl();//修改前
		IUserService userService = new UserServiceImpl();//修改后
		
		User user = userService.loginUser(userName, userPwd);
		if (user!=null)
//			request.getRequestDispatcher("/WEB-INF/pages/main.html").forward(request, response);
			response.getWriter().println("login succesfully!!!");
		else
			response.getWriter().println("login failed!!!");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

WebServlet的用法
详情请点我哈哈哈哈

安全sql注入

PreparedStatement pstmt = con.prepareStatement("select * from t_user where name=? and psw=?");
			pstmt.setString(1,userName );
			pstmt.setString(2, userPwd);
			rs = pstmt.executeQuery();  
			
			if (rs.next()) {
				user = new User();
				user.setName(userName);
				user.setAge(rs.getInt("age"));
				user.setSex(rs.getString("sex"));
				user.setUserID(rs.getInt("userID"));
				user.setPwd(rs.getString("psw"));
			}

常见问题

1路径问题,所有路径都用复制
2 jdk版本
3 tomcat使用jdk的设置,乱码
4 IdeaIU使用方式
5 404的解决方案请看视频

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javaweb项目实践MVC入门到精通 的相关文章

随机推荐

  • Linux日志服务器配置

    配置日志服务器 环境 xff1a tibet xff1a 10 11 3 57 gaplinux xff08 日志服务器 xff09 xff1a 10 11 3 3 修改tibet上的 etc hosts xff0c 增加如下代码 xff1
  • 【Google】25匹马的角逐

    问题是这样的 xff1a 一共有25匹马 xff0c 有一个赛场 xff0c 赛场有5个赛道 xff0c 就是说最多同时可以有5匹马一起比赛 假设每匹马都跑的很稳定 xff0c 不用任何其他工具 xff0c 只通过马与马之间的比赛 xff0
  • HDOJ 1058 Humble Numbers解题报告【DP】

    Humble Numbers 题目详见http acm hdu edu cn showproblem php pid 61 1058 开始拿到这个题目的时候还纠结了半天 xff0c 英语很差的话这个题是不可能AC的 而我就是其中之一 Hum
  • 背包问题详解

    背包问题 背包问题 Knapsack problem 是一种组合优化的NP完全问题 问题可以描述为 xff1a 给定一组物品 xff0c 每种物品都有自己的体积和价值 xff0c 在限定的总体积内 xff0c 我们如何选择 xff0c 才能
  • 楼教主男人必解八题之 Coins 解题报告

    楼教主男人必解八题之 Coins 解题报告 题目详见http acm hdu edu cn showproblem php pid 61 2844 这个题目和POJ1742是一个题目 xff0c 也是楼教主的男人八题之一 说的是给出N种硬币
  • 如何证明程序的正确性?

    什么样的程序才是正确的 xff1f 如何来保证程序是正确的 xff1f 测试 xff1f NO xff01 采用测试方法确实可以发现程序中的错误 xff0c 但却不能保证和证明程序中没有错误 xff01 先来看一些概念 xff0c 有关 程
  • 平摊分析

    平摊分析 我们经常在处理数据结构的时间复杂度的时候 xff0c 大多数操作代价很低 xff0c 可是由于某些个别操作的代价较高 xff0c 导致最后求得时间复杂度的上界不是那么的紧凑 在平摊分析中 xff0c 执行一系列数据结构操作所需要的
  • intel realsense t265+rtabmap实现地形扫描(效果欠佳)

    1 intel realsense t265驱动安装 https blog csdn net crp997576280 article details 109544456 2 Rtabmap 安装 https blog csdn net z
  • Windows10下RTABMAP+T265实现三维建图

    安装Rtabmap xff1a Installation introlab rtabmap Wiki github com 文件为RTABMap 0 20 16 win64 cuda11 1 exe 安装intel realsense t2
  • 树莓派3B+(以及老版本)内网穿透 frp 后外网ssh或者vrc server连接

    1 服务器配置 xff0c 服务器选择Debian 或者 CentOS 开一个服务器 然后用ssh连上 xff0c ssh可以用本地xshell或putty连接 也可以用网页版ssh连接 先进入管理员模式 xff0c 免得后面一直sudo
  • 在雪豹10.6.2(Mac OS X)上安装Oracle10g

    1 Install preparation 基本环境 xff1a Snow Leopard10 6 2 xff0c Oracle10 2 0 4 打开Mac的终端 xff0c 执行 xff1a sudo i 创建oinstall组和orac
  • 一个开源AC算法源码分析

    ps1 本文不讲AC算法的原理及数学证明 xff0c 具体请参考这篇文章 xff1a efficient string matching an aid to bibliographic search pdf ps2 源码主页 xff1a m
  • 手写RTOS(课程回顾)

    什么是程序 X86 X86在调用函数的时候传递在参数是从栈中取出的 xff0c 需要哪些参数提前按一定顺序入栈即可 第一个出栈的就对应第一个参数 xff0c 依次类推 函数返回值存在eax中 ARM arm函数调用参数传递顺序是从r0 r3
  • 树莓派 raspberry系统 VNC View 连接 Cannot currently show the desktop 错误解决

    https www raspberrypi org forums viewtopic php t 61 216737 我是因为空间不够
  • 进程、线程以及上下文切换概念详解

    目录 1 线程和进程的概念 2 进程间的通信方式有哪些 xff1f 3 线程的同步和互斥操作 4 在Java中线程是如何实现同步和互斥的 xff1f 4 什么是线程的上下文切换 xff1f 5 什么是用户模式和内核模式 xff1f 1 线程
  • 【计算机网络】(五)拨号上网与宽带上网PPP,PPPoE,ADSL,FTTH(GPON)

    可见链接 https www zhihu com question 48988005 它们都是个人用户接入Ethernet的协议 小学的时候家里就是拨号上网的 xff0c 每次有人打电话到家里网就会断掉 xff0c 游戏就掉线 xff0c
  • 旧版本PX4固件编译报错:error: converting a packed ‘flash_entry_header_t‘ {aka ‘struct flash_entry_header_t‘}..

    文章目录 前言一 解决办法1二 解决办法2三 总结 前言 旧版本PX4 Autopilot固件编译报错 xff0c 报错内容如下 xff1a src lib parameters flashparams flashfs c 190 2 er
  • SNMP测试

    SNMP测试 测试环境 xff1a Solaris10 10 10 128 89 Linux xff1a 10 10 151 8 windows 测试方案 xff1a 1 本地测试 2 远程测试 配置文件 xff1a 修改环境变量 在sol
  • apex编译错误解决方案

    这里写自定义目录标题 apex编译错误解决方案 csrc mlp cpp 123 3 note in expansion of macro AT DISPATCH FLOATING TYPES AND HALF AT DISPATCH FL
  • Javaweb项目实践MVC入门到精通

    Javaweb项目实践MVC入门到精通 目标配置环境实体模型 user Dao的实现实体模型 ModelViewController xff1a 转发任务 xff0c 路由器的功能安全sql注入常见问题 目标 这个目标是写一个MVC模型 通