《Java Web 开发入门到实战》-复习自用

第一部分 JSP

一个JSP页面通常由4种基本元素组成:
1.HTML标记
2.JSP注释
3.java脚本元素 如java代码
4.jsp标记

Jsp注释:

<%-- 内容 --%>

Jsp代码片段:

<%  String a = null; %>

如此这般比注释少了两个-符号

当多个客户请求jsp时候,jsp为每个客户启动一个线程,不同的线程会分别执行该jsp页面中的java程序片,程序片中的局部变量,在不同的线程中分配不同的内存空间,因此一个客户对jsp页面局部变量的操作不会影响别的客户
《Java Web 开发入门到实战》-复习自用_第1张图片
成员变量和方法的声明格式 <%! 声明变量 %>
在上面的变量 在整个jsp页面都有效,而且多个用户共享这个变量,其他用户对于该变量的更改会影响这个值。

在标记符 <%= %>之间插入表达式
在<%@ page String a = “” %>中定义属性
一般主要用于导包
《Java Web 开发入门到实战》-复习自用_第2张图片
《Java Web 开发入门到实战》-复习自用_第3张图片
《Java Web 开发入门到实战》-复习自用_第4张图片
<%@ include file =“URL” %>
如此方法用于加载在静态页面加载图片等 ,先生成jsp文件 再转java处理
也可以用如下方法
加载jsp文件或者html之类的用如下方法

也可以
标记
这种是先处理后包含所以这个动态方法会慢 但是灵活

JSP跳转 + 传参


 标记 
 

## 第二部分 JSP内置对象
request 对象 在这里贴出几个常用方法

request.getAttribute(String name)返回指定属性的属性值
String a = request.getParameter(String name)返回name指定的参数的参数值
String [] a =request.getParameterValues(String name)返回names数组指定的参数的参数值
request.setCharacterEncoding(String code )一般设置为utf-8 针对post传输
setAttribute(key value) getAttribute(key)类似hashmap的东西
response.setContentType 可以重新设置contenType属性值
response.setHeader 定义返回的http 头的信息
response.sendRedirect 实现客户端的重定向
web服务器可以用内置对象 session来存放 有关http链接信息
客户端连接就会创建一个session对象 每个对象分配一个ID
session.getId 就能获取
session失效的方式 1:用户关闭浏览器 2:调用invalidate()方法
不同于session application是多个用户可以共享的
服务器关闭才会使得 application失效
一般实现网站访问数量
pageContext 提供了获取jsp所有内置对象的方法
也提供了提取属性的方法
《Java Web 开发入门到实战》-复习自用_第5张图片
《Java Web 开发入门到实战》-复习自用_第6张图片
JSP有四种作用域:
页面域 page
请求域 request
会话域 session
应用域 application
jsp 使用bean <% import=“com.bean.*”%>

Servlet 基础

Servlet有两种方法,一种是注解方式实现,一种是xml实现
《Java Web 开发入门到实战》-复习自用_第7张图片这是XML实现

《Java Web 开发入门到实战》-复习自用_第8张图片
注解实现
Servlet主要有三个过程 :
初始化servlet init()实现 并且实现一次
service()方法相应请求 多客户端则每个客户端启动一个线程
servlet死亡
《Java Web 开发入门到实战》-复习自用_第9张图片
这是servlet比较重要的知识,由于本人掌握,就不多做解释了:)

重定向和转发:
转发 发生在服务器端 浏览器还显示在之前请求的地址 使用 RequestDispatcher getRequestDispatcher(String url) 方法实现一个
RequestDispatcher 类 从而调用其的forward(request,response)方法实现转发
重定向 发生在客户端 相当于两次请求以前 request 存放的信息完全失效
sendRedirect方法调用,在之前有讲过
request.getSession()获取session

《Java Web 开发入门到实战》-复习自用_第10张图片
MVC不会那就可以洗洗睡了,这里不累赘了:)
Cookie c = new Cookie(“cookie的名称”,“cookie的值”)
addCookie©添加cookie
也可以getCookie()获取cookie
Cookie默认不在客户端保存 关闭浏览器就会失效
setMaxAge(ing time )设置cookie的存活时间
time = 0 表示删除cookie
time = 负数 浏览器关闭失去cookie
《Java Web 开发入门到实战》-复习自用_第11张图片
Session只会在第一次访问服务器时候才会创建 访问静态web不会创建
invalidate方法失其失效 用户和服务器多次会话使用同一个session
Session ID 被保存在cookie中 所以不是很安全 会被更改
URL重写技术
《Java Web 开发入门到实战》-复习自用_第12张图片
一句话概括: 在url上加上session 就完事了

过滤器 Filter和监听器 Listener

过滤器 Filter对客户请求进行预先处理
比servlet 处理先 可以拦截任意资源
可以放置多个 不影响访问速度
一般防御DOS之类的攻击要写Filter 一般程序员考虑此类问题较少,这是需要重视的
Filter 中 init(FilterConfig fconfig)方法 初始化过滤器 配置其信息
doFilter 主要就是执行了 在这里插入图片描述
在这里插入图片描述
destroy 使其销毁

针对filter
《Java Web 开发入门到实战》-复习自用_第13张图片
《Java Web 开发入门到实战》-复习自用_第14张图片
如此两种方法皆可
《Java Web 开发入门到实战》-复习自用_第15张图片
ServletContextListener 监听 context的创建与销毁 context表示当前web应用程序 服务器开启时候调用其 contextInitalized(ServletContextEvent sce)方法 服务器关闭时候执行 contextDestroyed(ServletContextEvent sce)方法
该监听器用于启动时自动获取web.xml中配置的初始化参数 作为定时器加载全局属性对象 创建全局数据库连接 加载缓存信息等
ServletRequestListener 监听request的创建 每次请求都会创建requestInitialized(ServletRequestEvent sre) requestDestroyed(ServletRequestEvent sre)
监听器按照web.xml顺序来的 监听器 过滤器 servlet
httpsession中对象的状态:绑定-》解除绑定 钝化-》活化
《Java Web 开发入门到实战》-复习自用_第16张图片

实现上传下载

《Java Web 开发入门到实战》-复习自用_第17张图片
针对文件上传 @MultipartConfig注解要写在 HttpServletReuqest上面

JDBC

小DEMO
实现了插入lalala 并且查询lalala

package Pojo;

import java.sql.*;

public class ConnectDao {
    public static  void main(String args[]){
        try{
        Class.forName("com.mysql.jdbc.Driver");//设置驱动
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost/Student?user=root&password=594824210&useUnicode=true&characterEncoding=UTF-8"); //建立数据库连接
            Statement s = con.createStatement(); //创建对象
//            PreparedStatement ss = con.prepareStatement("insert into student (Sname) values (?);");
//            ss.setString(1,"lalalasanshale");
//             int a  =ss.executeUpdate();
            int flag = s.executeUpdate("insert into student (Sname) values ('lalala');");
            ResultSet rs = s.executeQuery("select *from  student where Sname = 'lalala'");
            while (rs.next()){
                System.out.println(rs.getString("Sname").toString());
            }
        }
        catch (ClassNotFoundException | SQLException e){
            System.out.println(e.toString());
        }
    }
}

数据库连接池的基本思想 :为数据库连接设计一个缓冲池,在缓冲池放入一定数量的连接,当需要建立数据库连接的时候,只需要从数据库中取出一个再放回。通过连接池管理机制监视数据库连接的数量以及使用情况,为系统开发 测试 和性能调整提供依据
Statement 对象在每次执行sql语句时候都将语句传给数据库 将sql语句转换为命令 并且执行该命令 所以效率低下
prepareStatement(String sql)方法把sql语句预编译然后传入参数 再运行方法就比上面效率多了,同时! 可以防止sql注入的问题!(大知识,划重点 哪天你被暴库了 你就知道了:))

AJAX

GET方式请求:xmlhttp.open(“GET”,“URL 一般指向”,true)true表示可以异步请求(个人不是很喜欢异步请求,有时候编程时候返回的值不是预定的值,喜欢写false对于小项目影响不大)
xmlhttp.send()发送到服务器 异步的好处就是可以立即返回 ,不然等到服务器返回信息才会返回,个人觉得差距不大。
GET在URL传参 不多累赘。
POST
xmlhttp.open(“post”,“URL 一般指向Servlet”,true)
xmlhttp.setRequestHeader(“header”,“value”)
xmlhttp.send(“name=lalala&pwd=lalala”)
获取返回值
document.getElementById(“myResponse”).innerHTML=xml.reponseText;
《Java Web 开发入门到实战》-复习自用_第18张图片
responseXML 用于接收XML形式的相应信息 传入的 content-Type头部指定MIME类型为text/xml 或者是application/xml
onreadystatementchange 指定每次状态改变所触发事件和事件处理函数
status 返回状态码 200成功 202请求接受但是没完成 400请求错误 404资源错误 500服务器错误
1.定义ajax的触发事件
2.创建ajax 事件 var xmlhttp = new XMLHttpRequest();
3.确定请求地址和参数
4.xmlhttp.open(“post”,“URL 一般指向Servlet”,true)
5. onreadystatementchange 指定每次状态改变所触发事件和事件处理函数
6. 根据相应处理数据
7. send
json:
{
key1:value1;
}
value 可以是String int Object list 都行
或者是
[
value1
value2
]
两者组合也可以
{
“hobby”:[“足球”,“篮球”];
}

在js中使用json:
var jsonText = “{“name”:“lalala”}”
var jsObj = eval("("+jsonText+")")
vat jsobj = JSON.stringify(jsonText);

导入JQ


你可能感兴趣的:(java)