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
-servlet继承关系
MVC模式
M:Model(模型):实现各个功能。可用JavaBean实现
V:View(试图):用于展示、和用户交互。可用HTML等实现。
C:Controller(控制器):接受请求,将请求跳转到模型处处理;模型处理完毕后,再将处理结果放回请求处。可以用JSP实现或者Serlet(推荐)实现。
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();
}
}
}
}
}