Java web
一、JDBC 提供者:sun公司
1.JDBC是实现Java数据库连接技术,提供连接数据库的能力
2.JDBC 的工作原理
JDBC API ,供程序员调用的接口与类,集成在java.sql和javax.sql 包中,如:DriverManager类、Connection接口、 Statement接 口、ResultSet接口。
3.如何配置JDBC ???
右击javaProject-->build Path-->configure build path最后一个-->Libraries-->add External JSRs-->选择jar包(mysql-connector)
4.JDBC访问数据库步骤 5步查找数据库的信息
加载不同数据库厂商提供的驱动DriverManager
(1)加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
(2)获得Connection连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/t110", "root", "密码");
Mysql 8以上的url: 后面加 ,我们现在用的mysql是5.7版本
"jdbc:mysql://localhost:3306/t110?serverTimezone=GMT%2B8
(3)通过Statement/PreparedStatement创建对象,传递SQL语句
Statement stmt = conn.createStatement();
(4)执行查询的方法,获得ResultSet结果集合,分析结果集合
ResultSet rs = stmt.executeQuery("select * from student");
while(rs.next()){//如果有下一行未读取的记录的话,就将光标指向该行
System.out.println("学号:"+rs.getString("stuno"));
System.out.println("姓名:"+rs.getString("stuname"));
System.out.println("年龄:"+rs.getInt("stuage"));
System.out.println("性别:"+(rs.getBoolean("stusex")?"男":"女"));
System.out.println("生日:"+rs.getTimestamp("birthday"));
System.out.println("===========================");
}
(5)释放资源
rs,stmt,conn.close();
5.JDBC 给数据库添加数据 步骤 5步
(1)准备工作
int row = -1; //代表行数
//写对应数据库表中的字段类型以及要添加的数据,例如
String id = "10011019";
String name = "gz";
int age = 23;
int sex = 1;
String birthday = "1997-02-18 08:15:15";
//写添加的sql语句:例如:
String sql = "insert into student values('"+id+"','"+name+"',"+age+","+sex+",'"+birthday+" ')";
(2)加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
(3)获得Connection连接
Connection conn = DriverManager.getConnection("jdbc:mysql:///t110", "root", "密码");
(4)通过Statement创建对象,传递SQL语句
Statement stmt = conn.createStatement();
(5)执行添加的方法executeUpdate,返回被改变的int类型的行数
row = stmt.executeUpdate(sql);//增删改 都用这个方法
在sql语句中的第一个“?” 的位置填充东西 PreparedStatement
Pstmt.setString(1,东西);
二、DAO 提取接口
DAO开发模式,使用面向对象的方式对数据库的数据进行处理
**接口:**定义对该表进行的所有操作
**实现类:**根据存储介质不相同,实现接口中的方法
实现步骤:
1、新建entity包,创建和数据库相对应的实体类
(表名和库名一致,属性名和字段名一致)提供构造,get set方法
2、新建dao包,创建接口,文件名后加dao 提出公共的BaseDao
(1)查询全部 List findALL();
(2)根据主键查询 Student findById(Student id);
(3)添加数据 int insertStudent(Student student);
(4)修改数据 int updateStudent(Student student);
(5)删除数据 int deleteStudent(String id);
3、创建接口的实现类 文件名后加Impl
4、创建测试类
三、配置文件 单例模式
单例模式:
1、把构造方法私有
2、程序提供给别人唯一对象 static
单例模式的实现方式有两种:
==1、懒汉方式 ==
线程不安全 加 synchronized 同步锁 就安全
1、配置文件-属性文件 .properties (键 值) 建在src下面
在 Source中,输入关于数据库的键值对
Properties 专门读取.properties文件的类
2、建一个ConfigManager.java类中:创建三个方法
==2、饿汉方式 ==
随后:把BaseDao改成以下 取键即可
四、JSP 概述(Java Server Pages)
CS (Client Server) 软件需要安装的本地的 局域网
BS (Broswer Server) 浏览器服务器 广域网
URL 统一资源定位符 http://localhost:8080/项目资源地址
JSP 是运行在服务器端的Java页面,使用HTML嵌套Java代码实现
一、B/S 架构工作原理
B/S架构采用请求/响应模式进行交互 (request/response)
二、常用的Web服务器
1.Microsoft : IIS
2.Apache:Tomcat
3.Oracle:WebLogic 商用 收费
4.IBM:WebSphere 商用 收费
5.Nginx 并发能力强
三、Tomcat 服务器 http://tomcat.apache.org/download-70.cgi
1.Apache Jakarta的开源项目
2.轻量级应用服务器
3.开源、稳定、资源占用小
4./bin 用户启动和停止Tomcat的
5./conf 存放服务器的各种配置文件
6./webapps默认存放此目录下
7./work Tomcat把由JSP生成的Servlet放于此目录下
四、操作Tomcat 的注意事项
1.Bin目录下中的Startup.bat 启动后,不能关闭,最小化
2.启动时,窗口一闪而过:是因为没有配置JAVA_HOME
3.端口号修改在 conf/server.xml 文件中
部署Web应用程序 到Tomcat的webapps目录
修改server.xml <Context path=”” docBase=”” />
Alt+/ 导包
五、在Dynamic Web项目中如何显示右击new里边的东西???
Window–>Customize Perspective–>最后一个Shortcuts找到java勾上
六、创建Web项目 右击–>Dynamic web Project
七、修改JSP生成文件的编码格式:
1.Window–>JSP Files–>Encoding改成UTF-8
八、 JSP的输出和注释
1.输出
(1)**Page 指令:**通过属性定义了JSP的特性,实现与JSP容器的通信
<%@ page language=”java”contentType=”” pageEncoding=”utf-8”%>
Language: 指定JSP页面使用的脚本语言
contentType: 用来指定JSP页面所采用的字符编码方式
pageEncoding: 用来指定JSP页面所采用的字符编码方式
import: 通过该属性来引用脚本语言中使用到的类文件
(2)**Out对象:**是JSP的内置对象
无需实例化即可使用实现数据的输出显示
2.JSP中的注释:
Ctrl+Shift+/ 注释 选中的前提
Ctrl+Shift+\ 取消注释
Html注释:<!-- --> 页面中可以看到
JSP注释:<%-- --%> 页面中看不到
JSP脚本中注释:<%// %>、<%/* */%> 页面中看不到
九、 JSP声明全局变量和方法
1.变量
(1)<%! int j =9 %> 声明全局变量
(2)<% int i =9 %> 声明局部变量
(3)<%= i %> 调用变量
2.方法 在<%! %> 里声明方法
十、 Web 程序调试和排错
1.常见错误:
(1)404错误:找不到访问的页面或资源
① 运行时,URL输入错误
② 将页面放在WEB-INF 下
③ 外部启动Tomcat ,未部署项目
(2)500 错误:JSP页面代码有误
(3)页面无法显示: tomcot 没启动
十一、 获取表单提交的数据
1.请求对象 request
(1)Request.getParameter(“String name”); 获得某一个参数
(2)Request.getParameterValues(“元素名”); 获取同名的多个参数 返回数组
十二、Get 与 post 区别
十三、处理中文乱码
1.表单post方式提交,中文乱码处理
(1)Request.setCharacherEncoding(“utf-8”);请求
(2)Response.setCharacterEncoding(“utf-8);响应 不加也行
2.表单get方式提交,中文乱码处理 (打散再重组 治标)
(1)name = new String(name.getBytes(“ISO-8859-1”),”utf-8”);
(2)找到comcat–>conf–>server.xml文件里–>connector标签,加个属性:URIEncoding-”utf-8” 重启服务器就好
十四、在请求中存取属性
1.在请求中保存属性
(1)setAttribute(String,Object);
例如:request.setAttribute(“mess”,”注册失败”);
2.在请求中获得属性
(1)GetAttribute(String name);
注意:
1.在使用属性值的时候要做非空判断,否则会出现空指针异常
2.它的返回值类型是object类型,需要做数据类型的转换
十五、跳转的两种方式:
1.转发 RequestDispatcher对象 forward()方法 地址栏不变
(1)request.getRequestDispatcher(“url”).forward(request,response);
通过请求获得一个分发器,跳转到url文件名.jsp,同时携带请求响应
(2)<jsp:forward page=”url”>
2.重定向 :response.sendRedirect(“url”); 地址栏变
(1)将用户请求重新定位到一个新的URL
request.getContextPath() +/a.jsp 获得上下文路径../
遇到乱码的情况怎么办???
URLEncoder.encode(String,String); 编码
URLDecoder.encode(String,String); 解码
例如:
十六、JSP内置对象
1.JSP内置对象是Web 容器创建的一组对象
2.常用的JSP内置对象
(1)Out 输出对象 out.println();
(2)Response 响应对象
response.sendRedirect(“../地址路径”)
(3)Request 请求对象 方法:
① String getParameter(String name)
根据表单组件名称获取提交数据
②String[] getParameterValues(String name)
获取表单组件对应多个值时的请求数据
③void setCharachterencoding(String charset)
指定每个请求的编码
④RequestDispatcher getRequestDispatcher(String path)
返回一个RequestDispatcher对象,该对象的forward() 方法用于转发请求
(4)Session会话对象 作用域大session.GetAttribute(“名”);
① 一个会话就是浏览器和服务器之间的一次通话,会话可以在多次请求中保存和使用数据。
② Session 是单用户,多页面可共享的,session保存在服务器端。
③ session.getId() 服务器端使用的记录客户端状态的机制,每一个session有一个唯一的sessionid 。
④ 会话的清除和过期
1)程序主动清除 session数据
a.设置会话失效 session.invalidate(“”); 注销
b.移除会话的一个属性 session.removeAttribute(“名”);
2)服务器主动清除长时间没再次发出请求的session
a.方法一:setMaxInactiveInterval(int 秒);
b.方法二:修改web配置文件
(5)Cookie 跟踪用户的整个会话 小饼干 实现自动添加用户名
① cookie在客户端记录信息 session是基于cookie 的
② Cookie中不要用中文,如要存 需要处理两点:
URLEncoder.encode(name,”-8”);
URLDecoder.decoder.decode(name,”utf-8”);
③ cookie以文件方式保存数据 添加数据 addCookie(cookie
)
④ 获取数据 public Cookie[] getCookies();
⑤ 设置有效期 public void setMaxAge(int expiry);
⑥ 设置cookie路径 cookie.setPath(“/”);
对于此项目都可见
例如:
(6)Application 应用程序对象
在页面中实现计数器,页面访问的次数,实现如下:
注:==request、session、application 三个对象对比 ==
**相同点:**都可以存储属性
不同点:
Request 中存储的数据仅在一个请求中可用
Session 中存储的数据在一个会话的有效期内可用
Application 中存储的数据在整个Web项目中可用
(7)pageContext 页面上下文对象
(8)page 页面对象 this
(9)config 配置对象
(10)exception 异常对象
格式化输出时间
Date date = new Date();
SimpleDateFormat f = new SDF(“yyyy-MM-dd”);
String time = f.format(date);
在Eclipse里生成网页:
http://localhost:8080/(项目名)U2JSP/(文件名)NewFile.jsp