栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

个人练习 ,使用maven,git servlet jdbc jsp完成如下任务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

个人练习 ,使用maven,git servlet jdbc jsp完成如下任务

要求如下

1. 创建一个名为Exam的多模块maven项目, 其中有三个子模块分别为
   1) 基础模块pojo
   2) 基础模块dao
   3) web模块web

2. 设置其依赖关系: web 依赖 dao
                 dao 依赖  pojo

3. 子模块功能实现说明
   1) 基础模块pojo
   在该模块内定义一个bean,名称为User;
   其相应的属性: id(整型)  name(字符串)  age(整型) gender(字符)
               birthday(日期) hobbies(字符串数组)
   
   2) 基础模块dao
   说明: 1. 数据库使用mysql数据库
        2. 创建一张User表, 表中的字段分别为: 
	          1. id  序号
	          2. name 姓名
	          3. age  年龄
	          4. gender 性别
	          5. birthday 生日
	          6. hobbies 兴趣爱好
	          7. createtime 创建时间(日期类型)
	          8. updatetime 修改时间(日期类型)
        
                
   该模块主要用于定义数据库相关操作类与方法
   该模块分别创建两个类: a. DBUtil   b. UserDao
   a. DBUtil
   在该类中封装jdbc连接mysql数据库方法(1. 数据库驱动获取方法   2.数据库关闭方法)

   b. UserDao
   在该类中封装: 1) 一个插入User对象到数据表的方法
                  实现要求: 
                  1. createtime与updatetime两个字段值为当前时间,
                  并且为自动生成,不允许使用字符串固定值

                  2. 插入的数据字符串类型使用中文

                  3. id为自动生成(对顺序无要求)

               2) 一个通过id来得到相应User对象的方法

   3)web模块web
     该模块用于前台展示信息
     1. 在index.jsp页面中定义一个form表单,该表单需要向后台传递
        用户信息
        要求: 1)使用post方式
             2)action: "insert"

     2. 创建一个InsertServlet类,继承HttpServlet类
        在该类相关方法中实现从前台获取数据,传递给Dao层进行插入
        备注: a. 请求路径: http://localhost:8088/insert
             b. 需要处理中文问题
             c. 插入成功,向前台返回"数据已成功录入!"

     3. 创建一个home.jsp页面
        该页面定义一个form表单,用于输入用户id查询相应用户信息
        要求: 1)使用get方式
              2)action: "update"
        
     4. 创建一个UpdateServlet类,继承HttpServlet类
        该类用于返回用户信息
        要求: 1) 如果查询到了用户,就将信息返回至前台
              2) 如果查询不到用户,就向前台返回"该用户不存在"

4.  1) 在码云创建名为"Exam"的仓库,仓库设置为公开仓库而非私有;
    2) 并使用remote方式将本地仓库与远程仓库进行连接;
    3) 在本地创建.gitignore文件并对其进行配置;
         .gitignore配置要求:
              只允许上传 ".java" ".xml" ".jsp"  ".html"
    4) 将本地项目上传至远程仓库


第一步

新建一个maven项目  名字为Exam  创建成功后 然后再Exam中新建三个子模块,分别为dao,pojo,web(其中web为javaweb模块)

结构如下图所示  

 建立好结构后就完成了第一步

第二步

在模块之间添加依赖,打开dao模块的pom.xml文件,然后添加如下代码

  
        
            com.sclw
            Pojo
            1.0-SNAPSHOT
        
    

这样就完成了dao模块依赖pojo模块

然后打开web模块下的pom.xml文件 添加如下代码

    
        
            com.sclw
            Dao
            1.0-SNAPSHOT
        
    

把依赖添加完毕后就完成了第二步,

第三步

一 :建立User用户对象的javaBean模型  

在pojo模块下的java文件夹中新建一个User类  属性为 id(整型)  name(字符串)  age(整型) gender(字符)   birthday(日期) hobbies(字符串数组)

属性如下

public class User {
    private int id;//id
    private String name;//名字
    private int age;//年龄
    private char gender;//性别
    private Date birthday;//生日   这里的Date类为java.sql.Date  
    //因为要与数据库交互,推荐使用个
    private String[] hobbies;
//使用代码编辑器生成其属性的get和set方法  以及toString方法

}
二:在mysql数据库中建立一个User表,并编写一个DBUtil连接数据库的工具类以及Userdao类 ,在Dao模块下

建表语句如下:

create table User (
id int primary key,`name` varchar(30),age int ,gender varchar(30),
birthday date,hobbies varchar(30),createtime date,
updatetime date
)

注意.数据表要和User类进行对应

编写DBUtil类  主要用于获取数据库连接对象, 代码如下

public class DBUtil  {
    //加载驱动  mysql8要使用com.mysql.cj.jdbc.Driver
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    public static Connection getConn() {
        try {
            return DriverManager.getConnection("jdbc:mysql://localhost:3306/employee", "root", "root");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    
    public static void close(ResultSet rs,Statement st,Connection conn){
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (st!=null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
}

编写UserDao类,用于对数据库插入数据的方法insert(),和根据id查询数据的方法findUserById()  代码如下

public class UserDao {
    
    public int insert(User user) {
        int n = 0;
        //sql语句  使用预编译的方式防止sql注入
        String sql = "insert into user(name,age,gender,birthday,hobbies,createtime) values(?,?,?,?,?,now())";
//在编写mysql语句时使用now()函数使其值为当前时间
    
        Connection conn = DBUtil.getConn();
        PreparedStatement pst = null;
        try {

            //为预编译语句填充参数值
            pst = conn.prepareStatement(sql);
            pst.setString(1, user.getName());
            pst.setInt(2, user.getAge());
            pst.setString(3, user.getGender() + "");
            pst.setDate(4, user.getBirthday());
            pst.setString(5, Tools.arrayToString(user.getHobbies()));//新建一个Tools工具类用来吧数组转为字符串
            n = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //调用关闭连接方法
            DBUtil.close(null, pst, conn);
        }
        return n;
    }

    
    public User findUserById(int id) {
        User user = null;
        String sql = "select * from user where id=?";
        Connection conn = DBUtil.getConn();
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {

            pst = conn.prepareStatement(sql);
            pst.setInt(1, id);
            rs = pst.executeQuery();
            //如果存在数据,则创建User对象 并对其赋值
            while (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                user.setGender(rs.getString("gender").charAt(0));//获取首字母的char值并赋值
                user.setBirthday(rs.getDate("birthday"));//因为对应bean模型为sql的 
//date,所有不需要进行强转
                user.setHobbies(rs.getString("hobbies").split(","));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, conn);
        }
        return user;
    }
}

在这里用到了一个工具类Tools    有一个把数组转为字符串的方法arrayToString() 代码如下

public class Tools {
    public static String arrayToString(String[] strs){
        String str="";
        for (String s:strs) {
            str+=s+",";
        }
        str=str.substring(0,str.length()-1);
        return str;
    }
}
三:web模块的编写

index.jsp页面的编写

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>


    
    用户注册


用户注册
请输入姓名:
请输入年龄:
请输入性别:
请输入生日:
请输入爱好:看书 踢足球 玩游戏

InsertServlet类的编写,用于处理index.jsp页面提交过来的请求,根据插入数据的条数是否大于或等于1判断是否成功插入数据,来进行不同的处理

@WebServlet("/insert.do")
public class InsertServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        User user = new User();
        //获取姓名并设置User对象姓名
        String name = req.getParameter("name");
        user.setName(name);
        //获取年龄并设置年龄
        String age = req.getParameter("age");
        if (age != null && !age.equals("")) {
            //如果有值就设置获取的值
            int age1 = Integer.parseInt(age);
            user.setAge(age1);
        } else {
            //如果没有则设置为18
            user.setAge(18);
        }
        //获取性别并设置User对象性别
        char gender = req.getParameter("gender").charAt(0);
        user.setGender(gender);
        //获取生日并判断处理
        String birthday =req.getParameter("birthday");
        user.setBirthday(DateTools.dateStrToDate(birthday));//新建了一个数据转换工具类 吧字符串转为时间类型对象
        //获取爱好并设置User对象爱好
        String[] hobbies = req.getParameterValues("hobbies");
        user.setHobbies(hobbies);
        UserDao userDao=new UserDao();
        if (userDao.insert(user)>=1) {
            resp.getWriter().println("数据已成功录入");
        } else {
            resp.getWriter().println("数据录入失败");
        }
    }
}

工具类DateTools的编写,用于把字符串转为时间对象


public class DateTools {
    
    public static Date dateStrToDate(String dt){
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        try {
            date =sdf.parse(dt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

}

home.jsp类的编写,用于提供查询id是否存在的可视化查询界面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>


    
    查询


    
请输入编号:

UpdateServlet类的编写,用于查询是否存在该id的User;

@WebServlet("/update.do")
public class UpdateServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        String idStr=req.getParameter("id");
        int id=0;
        if (idStr!=null&&!idStr.equals("")){
            id=Integer.parseInt(idStr);
        }
        UserDao userDao=new UserDao();
        User user=userDao.findUserById(id);
        if (user!=null){
            req.setAttribute("User",user);
            req.getRequestDispatcher("/show.jsp").forward(req,resp);
        }else{//如果不存在则先页面输出用户不存在
            resp.getWriter().println("该用户不存在!!");
        }
    }
}

第四步:在gitee创建仓库并使用git上传,创建仓库后复制该仓库的ssh链接

 在idea中点击vcs 在点击第蓝色选项,然后点击ok

编辑.gitignore

添加其过滤规则  用来实现只提交给.jsp .html  .xml  ..iml 代码如下

 

 现在项目就被git管理  现在文件都为红色标识  这时候需要吧文件添加到暂存区,按照下面的图片依次点击选项

 然后点击吧鼠标移到dit 点击Mangage Remotes  会弹出以下页面,点击+号 然后把gitee的shh链接粘贴到URL中,点击ok

 然后点击git 再点击使用commit提交文件  填写提交信息,然后再次点击commit提交 

 提交完成后再次点击push  会弹出一下界面,选择第一次commit的信息  然后点击push

 这样就提交完成了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/870721.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号