javaWeb基础学习02----带你进一步认识后端

本次学习总结是在上一次文章中的进一步提高,提高方面有以下就几个方面;

一.数据库层

二.servlet层

三.web网络请求层

四.一些学习补充

 

一.数据库层

目前很多app 都有分页和查询物品列表的功能,这里我们就这个来补充一些数据库查询和模型如何设计,这里只提供大致学习思路和方向。

分页查询

1.首先查询总数 

2.传递给数据库 当前页,和一页的数量,和查询条件

3.数据库需要用到关键字,like 和limit

like ‘%百事%’ 某个字段包含所有百事的条件的数据;

limit ?,?,第一个是开始查询位置,第二个是开始位置+1到多少。

例子

QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//定义参数
List<Object> prmts = new ArrayList<>();

//查询的sql语句
String sql = "select * from product where 1=1";

//条件
if(category!=null && !"".equals(category)){
   sql += " and category = ?";
   prmts.add(category);
}

//分页
sql += " limit ?,?";
int start = (currentPage - 1) * pageCount;
prmts.add(start);
prmts.add(pageCount);
//start 开始在多少个的位置,到这页结束
return qr.query(sql, new BeanListHandler<Product>(Product.class), prmts.toArray()); 

二.servlet层 这里主要要讲一下,servlet封装,有时我们的一个servlet 将一类功能封装在一起,例如用户注册,登录,注销,等功能放在一起。这里首先我们先来了解一下过滤器,和监听器;

https://www.cnblogs.com/cxyzyh2017/p/6555869.html

 

这里我过滤器 我们就可以做个简单的例子

1.将编码设置直接放在里面,方便调用;

2.验证是否登录

 

下面我们来说一下,servlet简单封装,设置一个BaseServlet

@Override
protected void service(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {

    //1.方法名
    String action = request.getParameter("action");

    try {

        Method method = this.getClass().getDeclaredMethod(action,HttpServletRequest.class,HttpServletResponse.class);
        //通过反射拿到方法进行调用
        method.invoke(this,request,resp);
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    }
    catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    }
}

service() 方法

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

@WebServlet("/user/*")
public class UserServlet extends BaseServlet {

    public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

这样我们在html  表单提交action 可以这样写

<form action="${pageContext.request.contextPath}/user?action=login" method="post">

方便使用

 

三.web网络请求层

之前请求基本都是放到了servlet层,我们了解一下ajax和jquery

https://blog.csdn.net/u011583316/article/details/81431233

因为vue的强大,虽然现在这个两种强大的请求封装也逐渐被淘汰了,但是作为后端的人员还是需要了解了解

vue 后面我们在学习讨论,基础暂时不写哈。

 

四.一些学习补充

1.文件的下载上传

提供form表单,method必须是post
form表单的enctype必须是multipart/form-data

提供input type="file"类的上传输入域

     这里我们需要用到第三库 fileupload

fileupload是由apache的commons组件提供的上传组件。它最主要的工作就是帮我们解析request.getInputStream()。

使用fileupload只需要2个jar包 commons-fileupload.jar,核心包;commons-io.jar,依赖包

 

2.注解

注解给程序看,用于描述程序如何运行及在什么阶段来运行。

注解在实际开发中,最大的功能是用于替换配置文件

可以通过反射来让注解具有功能。
注解的格式: @xxxx

注解它的本质就是一个接口,这个接口需要继承 Annotation接口

 

元注解:

只能用在注解上的注解叫做元注解。(即:用于修饰注解的注解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值