前言
1. 掌握MVC架构原理。
2. 掌握使用Struts开发Web应用
具体操作
1. 配置数据库
JDBCUtils.java
package test5;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*JDBC工具类,使用Durid连接池*/
public class JDBCUtils {
private static DataSource ds;
static {
try {
//加载配置文件
Properties pro = new Properties();
//使用ClassLoader加载配置文件,获取字节输入流
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//初始化连接池对象
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
/*获取链接池对象*/
public static DataSource getDataSourse() {
return ds;
}
/*获取链接Connection对象*/
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
/*释放资源*/
public static void close(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///day14
# day14为创建的数据库,根据不同的数据库进行修改
username=root
password=5000
initialSize=5
maxActive=10
maxWait=3000
login2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login3</title>
</head>
<body>
<%--在项目中使用JSP,,JavaBean,servlet按照MVC架构
或者使用Struts2框架实现一个注册的应用;
MVC :
1. M : Model,模型。JavaBean
*完成具体的业务操作,如:查询数据库,封装对象
2. V : view,视图。JSP
*展示数据
3. C : controller,控制器。Servlet
*获取用户的输入
*调用模型
*将数据交给视图进行展示
--%>
<form action="LoginServlet" method="post">
<%--提交信息到BeanUtilsServlet进行--%>
用户名:<input name="username" type="text" placeholder="请输入用户名"><br>
密码:<input name="password" type="password" placeholder="请输入密码" ><br>
年龄:<input name="age" type="number" placeholder="请输入年龄"><br>
生日:<input name="birthday" type="date" placeholder="请输入生日"><br>
<input type="submit" value="注册"><br>
</form>
</body>
</html>
LoginServlet.java
package test6;
import domain.User;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import test5.JDBCUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import java.util.Map;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式,防止乱码
request.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "text/html;charset=utf-8");
//获取所有请求参数
Map<String, String[]> map = request.getParameterMap();
//创建User对象
User user = new User();
// 第一种方式解决:在使用BeanUtils的时候,String无法直接转换成Date
DateConverter converter = new DateConverter();
converter.setPattern(new String("yyyy-MM-dd"));
ConvertUtils.register(converter,Date.class);
//使用BeanUtils封装对象
try {
BeanUtils.populate(user,map);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
Connection conn = null;
PreparedStatement prstmt = null;
try {
//注册驱动,获取连接对象
conn = JDBCUtils.getConnection();
//开启事务
conn.setAutoCommit(false);
//定义sql
String sql = "insert into day14.user2 values (?,?,?,?)";
//预编译sql,获取执行sql对象
prstmt = conn.prepareStatement(sql);
//给占位符赋值
prstmt.setString(1, request.getParameter("username"));
prstmt.setString(2, user.getPassword());
prstmt.setString(3, user.getAge());
prstmt.setString(4, user.getBitStr());
prstmt.executeUpdate();//执行更新
//提交事务
conn.commit();
} catch (SQLException e) {
//事务回滚
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
e.printStackTrace();
} finally {
JDBCUtils.close(prstmt, conn);
}
HttpSession session = request.getSession();
session.setAttribute("user", user);
response.sendRedirect("show2.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
show2.jsp
<%@ page import="domain.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>show2</title>
</head>
<body>
<%
User user = (User) session.getAttribute("user");
response.getWriter().write("<h3>注册成功!信息为:</h3><hr>");
response.getWriter().write("<h3>"+user.getUsername()+"</h3><hr>");
response.getWriter().write("<h3>"+user.getPassword()+"</h3><hr>");
response.getWriter().write("<h3>"+user.getAge()+"</h3><hr>");
response.getWriter().write("<h3>"+user.getBitStr()+"</h3><hr>");
%>
</body>
</html>
运行截图
总结
1. 掌握MVC架构原理。
2. 掌握使用Struts开发Web应用