BS架构:基于浏览器的项目(软件)
CS架构:基于客户端服务器端的应用
web资源:我们电脑中的图片,音频,视频,页面。。。。。
服务器(tomcat):用来共享资源,也叫web容器
Tomcat的目录结构:
如何访问tomcat共享的资源:
http://10.1.5.170:8080/aa/个人首页.html
改端口号:
Eclipse使用
1. 修改工作空间字符编码
2. 修改默认字体大小
3. 修改右键new菜单里面的内容(添加一些选项)
4. Eclipse集成tomcat
5. Tomcat会默认把项目发布到工作空间中的目录,我们希望tomcat 把项目发布到tomcat自己的webapps目录下面
6. 创建动态web项目
7. 动态web项目的目录结构
8. 动态web项目发布
Jsp
Jsp:动态页面,在html页面中嵌入java代码实现动态页面
1. 导入自定义非jsp页面模板
2. Jsp语法规则:该了jsp页面的代码,必须重启服务器才能生效
(1) <%%>:该符号中的内容就是java代码,该符号内的变量是局部变量
(2) <%=%>:输出变量结果到html页面
(3) <%!%>:可以定义方法,以及全局变量,在解析的时候会放到类里面
(4) <%---- %>:注释
3. Jsp页面的解析:tomcat第一次接收到jsp请求的时候会把整个jsp页面翻译成一个java类
(1) Jsp:是在html页面中嵌入java代码:html+(ajax,vue.js)
(2) Servlet:是在java代码嵌入html代码
4. Jsp九大内置对象:对象不用创建了,我们在jsp页面直接只用就行
Request:请求对象,封装的是用户请求服务的请求的所有数据
getParameter():用于获取表单数据
setAttribute():往作用域中存值
Out:输出对象,可以通过该对象对用户响应html
Response:响应对象
Session:会话对象
Page:相当于this
PageContext:是page作用域,因为只在当前页面生效,说就叫page作用域了
5. 登录流程
6. http协议:超文本传输协议,使用TCP协议传输html
(1) 无连接:一次连接只处理一个请求,请求完成断开连接
(2) 无状态:服务器端默认不会存储任何客户端的数据(会销毁request对象)
7. 乱码问题
(1) Post:设置请求以及响应的对象字符编码都是utf-8
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
(2) Get:其实tomcat8.0以上默认是支持utf-8
(3) 通过以上两种方式任然乱码:例如在跳转到登陆页面的时候拼在url后面的中文
① URLEncoder.encode():把中文编译成16进制编码
② URLDecoder.decode():把16进制编码反编译成中文
8. Get和post区别
(1) Get是默认的提交方式,会把表单里面的数据全部拼接在URL后面,是不安全的,并且get方式提交数据URL后面拼接的数据是有长度限制
(2) Post不会把表单数据显示在URL后面,长度没有限制,如果是涉及到密码的表单一定要使用post方式
9. 跳转页面
(1) 重定向:response.sendRedirect("");
① 地址栏显示的是跳转过后的页面路径
② 一个页面重定向到另外一个页面,两个页面不会共享同一个request对象
(2) 请求转发:request.getRequestDispatcher("main.jsp").forward(request, response);
① 地址栏显示的是跳转之前的页面的路径
② 一个页面请求转发到另外一个页面,两个页面共享同一个request对象
10. Cookie相关技术
Cookie是有服务器端产生,通过响应发送给客户端,客户端拿到cookie以后以文本的形式存在客户端本地,之后客户端向服务器端发送请求的时候都会带上该客户端和该服务器端保持的cookie信息
11. 四大作用域:用来保存以及传递数据
(1) Page(pageContext):放到page作用域中是数据只有在该页面生效,一般不会使用
(2) Request:请求作用域,作用范围是一次请求,当请求完成request会销毁,放在该作用域中的数据肯定也会清除
① setAttribute():往作用域中设置值
② getAttribute():从request作用域中取值
(3) Session(会话):一次会话包含多个请求,从我们第一次登陆成功(跟服务器建立会话)到浏览器关闭,期间所有的请求都在一个会话中,都会贡献同一个session对象
① setAttribute():往作用域中设置值
② getAttribute():从session作用域中取值
③ setMaxInactiveInterval():设置有效时间,以秒为单位
④ getMaxInactiveInterval():获取最大有效时间,非活动时间
⑤ Invalidate():注销session
⑥ getId():获取sessionID
(4) application:全局变量:整个项目运行期间都有效(切换浏览器仍然有效)
注意:不要把数据放到session作用域除非必要,例如登陆信息,如果两个页面需 要进行数据传递建议使用request,跳转方式用请求转发
JDBC开发规范
JDBC开发步骤:
1. 导入jar,并且加载驱动
2. 获取数据库连接
3. 获取PreparedStatement,发送sql语句并且带回执行结果
4. 关闭资源
1. Pojo层:建议实体类属性要和数据库表字段名字一致,如果说表字段单词之间用_隔开,那么属性名称使用驼峰命名法:new_title----->newTitle
2. Dao层:一个dao层的类对应一张表的增删查改
3. Dao层方法在起名字的时候不要使用get开头
4. Dao层必须提供接口
5. Dao层方法只能有一个参数
6. 在jsp页面不能直接调用dao方法,必须通过service层调用
(1) service层(服务层):项目里面的绝大部分业务逻辑是写在服务层的
JDBCC处理大文本(CLOB)及BLOB(二进制)
clob:大文本数据 字节流 Reader Writer
存
- 先通过pstmt的?代替小说内容(占位符)
- 再通过pstmt.setCharacterStream(2,reader,(Int)file.leng());将上一步的?代替为 小说流 注意:第三个参数需要是类型的
取
- 通过Reader reader = rs.getCharacterStream(“NOVEL”);
- 将Reader通过Writer输出即可。
blob:二进制 字节流 InputStream OutoutStream
与CLOB步骤一致,区别:setBinaryStream(…) getBinaryStream(…)
2、JavaBean
JavaBean(就是一个java类)的定义:满足2点就可以称为JavaBean
① Public修饰的类,public无参构造
② 所有属性(如果有)都是private,并且提供set/get (如果boolean 则可get可以替换成is)
使用层面,Java分为2类:
① 封装业务逻辑的JavaBean(Dao.java封装了登录逻辑) 逻辑
② 封装数据的JavaBean (实体类,Student.java Person.java) 数据
Servlet
MVC设计模式:
M:Model, 模型:一个功能。用JavaBean实现。
V:View, 视图:用于展示、以及与用户交互。使用html js css jsp jQuery等前端技术实现
C:Controller, 控制器:接收请求,将请求跳转到模型进行处理:模型处理完毕后,再将处理的结果返回给请求处。可以用jsp实现,但一般建议使用servlet实现控制器。
Jsp -----> Java(Servlet)-----> JSP
Servlet:
Java类必须符合一定的 规范:
a.必须继承 javax.servlet.http.HttpServlet
b.重写其中的 doGet()或doPost方法
doGet(): 接受 并处理所有的get提交方式的请求
doPost(): 接受 并处理所有的post提交方式的请求
Servlet要想使用,必须配置
Servlet2.5:web.xml
Servlet3.0:@WebServlet
Servlet2.5:web.xml:
项目的根目录:WebContent、src
<a href=”WelcomeServlet”>所在的jsp是在WebContent目录中,因此 发出的请求WelcomeServlet 是去请求项目更目录。
Servlet流程:
用户请求à<url-pattern>à根据<servlet-mapping>中的<servlet-name>去匹配<servlet>中的<servlet-name>,然后寻找到<servlet-class>,最终将请求交由<servlet-class>执行。