Javaweb项目实践MVC入门到精通

本文详细介绍MVC架构在JavaWeb项目中的应用,包括模型(Model)、视图(View)、控制器(Controller)的基本概念及其交互原理。通过具体实例展示了如何利用Servlet、JSP及JavaBean实现用户登录验证,同时涉及环境配置与SQL注入防护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标

这个目标是写一个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的解决方案请看视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值