servlet中跳转页面与jdbc操作数据库

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/u010173095/article/details/79965369

前面大概复习了一下servlet的相关的内容,下面复习一下较为基础的的跳转页面和jdbc操作数据库。

返回数据和跳转页面

刚开始复习的时候,竟然都想不起来jsp+servlet中如何跳转页面,实在是让人汗颜啊,不得不找教程复习了一下。

servlet中接收到请求,返回的内容一般分为两类:

  1. 处理好的数据
  2. 跳转的页面,有可能携带数据,也有可能不带数据

返回处理好的数据

返回数据一般都通过写出流写出,例如:

private void common(HttpServletResponse res) throws IOException {
        res.setCharacterEncoding("UTF-8");
        res.setContentType("text/plain;charset=utf-8");
        PrintWriter pw = res.getWriter();
        pw.write("人生若只如初见,何事秋风悲画扇");
        pw.flush();
        pw.close();
    }

无论什么类型的数据都可以通过这种方式写出,具体的数据格式需要和Content_type匹配。

跳转页面

跳转页面分为两种:

  1. 重定向
  2. 转发

转发就是常用的发起请求跳转到相关的页面,重定向就是跳转到和原来业务不相关的页面,
在浏览器路径上,转发看不到路径的变化,而重定向会变化为重定向的路径。

转发的写法:

request.getRequestDispatcher("/WEB-INF/jsp/myapp.jsp").forward(req, res);

实际查找页面的路径是:项目路径+定义的路径(/WEB-INF/jsp/myapp.jsp);
一般页面路径都是放在web-inf下面,因为这个安全路径无法直接访问jsp,如果放在web-inf外可以通过浏览器直接访问jsp文件。

重定向:

response.sendRedirect("/test/test.do");

这些内容其实没什么难理解的,能不能写出来就看你知不知道,就像我自己,想不起来就是不会写,想的起来就能写的出来,现在都是用各种框架,基本的写法却不记得了。

扫描二维码关注公众号,回复: 5362673 查看本文章

jdbc操作数据库

现在持久层基本都是用的mybatis,都是直接写一个dao或者mapper,然后配置一些sql就可以使用了,但是基本的使用jdbc操作数据库却不记得怎么写了。我的同事也是如此,甚至换一个数据库配置都不一定知道换,这是一个非常不好的现象。

java基本的操作数据的代码的写法非常固定,基本都是几个步骤:

  1. 获取驱动
  2. 获取连接
  3. 执行sql
  4. 关闭连接

    实际上,只有第三步是真正需要根据业务变换不同的sql,其它几步都是死板的写法,这也是让人反感的地方。
    测试代码:

Connection connection = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection(url, username, password);
            String sql = "select * from user";
            PreparedStatement ps = connection.prepareStatement(sql);
            //ps.execute();
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                System.out.println("data====" + rs.getString("name") + "====" + rs.getString("mobile"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            if (null != connection) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

如果在一个单纯额jsp+servlet项目中,使用这种写法操作数据库,就算业务不太复杂,也会写很多雷同的代码,这也是mybatis等持久化框架流行的原因之一吧。

总结

现在复习了基本的跳转页面和操作数据库,再加上前面复习的servelt和filter等,就可以实现一些基本的业务逻辑了。
在复习的过程中,我也体会到了使用成熟的框架带来的好处,主要有以下两点:

  1. 在使用servlet的时候,如果要实现一些业务,可能要写多个servlet,而每个servlet中都要写处理post和get请求,再根据请求的路径调用不同的方法。这样的写法,明显不如spring mvc通过注解的方式把不同的请求映射到不用的处理方法上。
  2. jdbc操作数据库的时候,需要写很多的雷同的代码,而且无法使用连接池技术,这样的写法远远不如mybatis+连接池的实现方式。

以前面试的时候,有人问我为什么要使用这些框架,有什么好处,现在想想,很多事情或者工具只有自己体会过之后,才知道优缺点,而不是人云亦云。

猜你喜欢

转载自blog.csdn.net/u010173095/article/details/79965369
今日推荐