实验六 基于MVC架构的Web开发


前言

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应用

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sky-stars

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值