MVC模式

JavaBean

JavaBean分为2大类:
1.封装业务逻辑的JavaBean(用于操作封装数据的JavaBean)
2.封装数据的JavaBean(实体类,与数据库中的一张表对应)

Servlet

Servlet:符合一定的规范的JAVA类。规范为:
a.必须继承javax。servlet.http.HttpServlet
b.重写其中的doGet()或doPost()方法
—1.doGet:接受并处理get提交方式的请求
—2.doPost:接受并处理post提交方式的请求

-servlet生命周期(5个阶段)

1.加载:由servlet容器自动处理
2.初始化:init(); 该方法会再Servlet被加载并实例化时执行
a.默认第一次访问Servlet时会被执行(只执行一次)
b.可以修改为Tomcat启动时自动执行(@WebServlet(value="", loadOnstartup=1))
3.服务:service()->doGet()/doPost()
4.销毁:destroy(),servlet被系统回收时执行
5.卸载:同1
5个阶段

-servlet继承关系

继承关系

MVC模式

M:Model(模型):实现各个功能。可用JavaBean实现
V:View(试图):用于展示、和用户交互。可用HTML等实现。
C:Controller(控制器):接受请求,将请求跳转到模型处处理;模型处理完毕后,再将处理结果放回请求处。可以用JSP实现或者Serlet(推荐)实现。
MVC模型
MVC案例(实现简单的登录操作)
View层

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- <a href="MyServlet">MyServlet</a> -->
	<form action="LoginServlet" method="post">
		用户名 <input type="text" name="uname"><br/> 
		密码 <input type="text" name="upwd"><br/> 
		<input type="submit" value="登录">
	</form>
</body>
</html>

Controller层

package com.cn.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//控制器层
/**
 * Servlet implementation class LoginServlet
 */
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理登录请求
		request.setCharacterEncoding("utf8");
		String name = request.getParameter("uname");
		String pwd = request.getParameter("upwd");
		System.out.println(name);
		System.out.println(pwd);
		Users user = new Users();
		user.setUname(name);
		user.setUpwd(pwd);
		int result = LoginDAO.login(user);
		if(result == 1) {
			response.sendRedirect("welcome.html");
		}else if(result == 0) {
			response.sendRedirect("false.jsp");
		}else {
			response.sendRedirect("login.jsp");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

Model层

//封装数据的JavaBean
package com.cn.model;

public class Users {
	private String uname;
	private String upwd;
	public Users() {
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUpwd() {
		return upwd;
	}
	public void setUpwd(String upwd) {
		this.upwd = upwd;
	}
	
}

//封装业务逻辑的JavaBean
package com.cn.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.cj.xdevapi.Result;

//模型层,用于处理登录操作(访问数据库)
public class LoginDAO {
	public static int login(Users user) {
		Connection conn = null;
		PreparedStatement stat = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDateTimeCode=false&serverTimezone=UTC", "root", "root");
			stat = conn.prepareStatement("select count(*) from users where uname=? and upwd=?");
			stat.setString(1,  user.getUname());
			stat.setString(2, user.getUpwd());
			ResultSet result = stat.executeQuery();
			if(result.next()) {
				System.out.println(result.getInt(1));
				if(result.getInt(1) > 0) {
					return 1;
				}
			}
			return 0;
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return -1;
		} catch (SQLException e) {
			e.printStackTrace();
			return -1;
		}finally {
			if(stat != null) {
				try {
					stat.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值