JDBC

jdbc连接的步骤

1.加载驱动 Class.forName("com.mysql.jdbc.Driver");
2.得到数据库链接
Connection conn = DriverManager.getConnection(url,
"root", "123456");
3.操作数据库
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from user");
4.获得返回结果
List<User> userList = new ArrayList<>();
while (rs.next()) {
  System.out.println(rs.getString("id") + " "+ rs.getString("name"));
   User user = new User();
   user.setId(rs.getString("id"));
   user.setName(rs.getString("name"));
   userList.add(user);
}
5.关闭各种资源
rs.close();
st.close();
conn.close();

preparedStatement

防止sql注入 实现批量处理数据

高级数据库操作

1.c3p0连接池 2.dbcp连接池 3dbutils数据库连接池

DBUtils主要就是简化JDBC操作,封装虽好,但还是要知道其中的原理才好。

Dbutils三个核心功能介绍
QueryRunner中提供对sql语句操作的API.
ResultSetHandler接口,用于定义select操作后,怎样封装结果集.


QueryRunner核心类:
QueryRunner(DataSource ds) ;传入参数为连接池

update(String sql, Object… params) ,执行insert update delete操作query(String sql, 

query(String sql,ResultSetHandler rsh, Object… params) ,执行 select操作

servlet

Servlet的生命周期

初始化阶段 创建 Servlet 实例对象,然后通过调用 init() 方法,只能用初始化一次 运行阶段 对于 Servlet 的每一次访问请求,Servlet 容器都会调用一次 Servlet 的 service() 方法,创建新的 ServletRequest 和 ServletResponse 对象 销毁阶段 在销毁 Servlet 之前,Servlet 容器会调用 Servlet 的 destroy() 方法

Servlet内的作用域

request session application

HttpServletRequest

获取消息行 获取消息头 获取请求参数的方法 请求转发和重定向

HttpServletResponse

状态行、响应消息头、消息体(大量的数据都是通过响应消息体传递的)getwriter()方法

5.1当客户端第一次访问Web应用时,服务器以响应头的形式将Cookie发送给客户端, 客户端会把Cookie保存到本地。当浏览器再次请求该Web应用时,客户端会把请求的网址和Cookie一起提交给服务器。 5.2客户端第一次访问Web应用时,服务器为该客户端创建一个Session,同时,服务器把该Session的ID放入Cookie返回给客户端。 5.3URL重写,是将URL重新写成Web应用可以处理的另一个URL的过程。

Filter

Listener

jsp

做业务逻辑 JSP声明语句:<%!声明语句%>,通常声明全局变量、常量、方法、类 JSP Scriptlet:<%java代码%>,其中可包含局部变量、java语句 JSP表达式:<%=java 代码%> <%=变量或可以返回值的方法或 Java 表达式%> 指令通常以<%@标记开始,以%>标记结束

三大指令

它们分别是 page、include 和 taglib标签库

include 当前 JSP 页面与静态引入的文件紧密结合为一个 Servlet。 这些文件可以是 JSP 页面、HTML 页面、文本文件或是一段 Java 代码。 include 指令的包含过程为静态包含

七大动作

1jsp:include 动作的包含过程为动态包含,通常用来包含那些经常需要改动的文件。 因为服务器执行的是两个文件,被包含文件的改动不会影响主文件,因此服务器不会 对主文件重新编译,而只须重新编译被包含的文件即可。并且对被包含文件的编译是在执行时才进行的,也就是说,只有 当 jsp:include 动作被执行时,使用该标记包含的目标文件才会被编译,否则,被包含的文件不会被编译。

2使用 jsp:param 动作标记向这个程序传递参数信息。

3jsp:forward 动作标记就可以实现页面的跳转,用来将请求转到另外一个 JSP、HTML 或相关的资源文件中。

4jsp:plugin 动作可以在页面中插入 Java Applet 小程序或 JavaBean,它们能够在客户端运行,但此时,需要在 IE 浏览器中安装 Java 插件。

5.jsp:useBean 动作标记用于在 JSP 页面中创建 bean 实例,并且通过设置相关属性,可以将该实例存储到指定的范围。

6.jsp:setProperty 动作标记通常与 jsp:useBean 动作标记一起使用,它以请求中的参数给创建的 JavaBean 中对应的属性赋值, 通过调用 bean 中的 setXxx() 方法来完成。

7.jsp:getProperty 标记用来获得 bean 中的属性,并将其转换为字符串,再在 JSP 页面中输出,该 bean 中必须具有 getXxx() 方法。

八大内置对象

​ application 对象是 javax.servlet.ServletContext 类的实例 ​ out 对象会通过 JSP 容器变换为 java.io.PrintWriter 类的对象。 ​ request 对象是 HttpServletRequest(接口)的实例 ​ response 是 HttpServletResponse 的实例 ​ session 对象 ​ pageContext 对象 ​ page 对象是为了执行当前页面应答请求而设置的 Servlet 类的实体 ​ config 对象是 javax.servlet.ServletConfig 类的实例

El

判断和取值

${"logout" eq ${param.action}
${sessionScope.u==null}
${6==6} 或 ${6 eq 6}
${A && B} 或 ${A and B}
${(6==8)?(9==9):(9!=9)}
${empty info}

访问bean${p1.ID}
访问集合${books [0]}

内置对象11个

pageContext pageScope requestScope sessionScope applicationScope 5个作用域对象 param paramValues cookie initParam header header Values

注:

当要存取的数择名称中包含不是字母或数字的特殊字符时,只能使用 []。 当取得的数据为动态值时,只能使用 []。

jstl

条件语句

<c:if test="${salary > 2000}">

  <p>我的工资为: <c:out value="${salary}"/><p></c:if>
c:choose>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:when test="<boolean>">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>

</c:choose

循环语句

<c:forEach var="i" begin="1" end="5">
    <c:out value="${i}"/>
</c:forEach