JAVA前端J2EE

J2EE

架构

BS(Broswer Server):客户端可以通过浏览器直接访问服务端
CS(Client Server):
a.如果软件升级:那么全部软件都需要升级
b.维护麻烦:需要维护每一台客户端软件
c.每一台客户端都需要安装客户端软件

Tomcat

Tomcat是一种常见的免费的web服务器
环境配置、服务配置、端口修改、虚拟路径、虚拟主机、应用配置与部署
端口占用:netstat -ano|findstr "80"并且taskkill /f /pid pin号
虚拟路径:将web项目配置到 webapps以外的目录(conf/server.xml中配置)(conf\Catalina\localhost中新增文件并新增虚拟路径)(web.xml中的/:代表项目根路径http://localhost:8888/Servlet25Project/;jsp中的/: 服务器根路径http://localhost:8888/)
虚拟主机:通过域名解析前的ip路径实现本机访问

Jsp

执行过程、页面元素、跳转方式、内置对象、作用域、JSTL、EL表达式
执行过程:(jsp- java(Servlet文件) -class)第一次访问:服务端将jsp文件翻译成java,再将java文件编译成class文件、第二次访问:直接访问class文件(Jsp 和Servlet 可以相互转换)
Eclipse开发:浏览器可以直接访问 WebContent中的文件、WEB-INF中的文件无法通过客户端(浏览器)直接访问,只能通过请求转发来访问、.统一字符集编码、修改web.xml,配置文件,java代码需要重启tomcat服务、修改 Jsp\html\css\js,不需要重启
页面元素:HTML、java代码(脚本Scriptlet:局部变量、!全局变量、=输出表达式)、指令(page、language:jsp、import、pageEncoding:jsp、contentType)、注释(html注释、java注释、jsp注释)
get和post:get方式在地址栏显示请求信息 (但是地址栏能够容纳的信息有限,4-5KB;如果请求数据存在大文件,图片等会出现地址栏无法容纳全部的数据而出错) ;post不会显示,文件图片上传必须是post
请求转发和重定向

请求转发 重定向
地址栏 不变 改变
是否保留第一次请求数据 保留 不保留
请求次数 1 2
跳转发生位置 服务端 客户端的第二次跳转

cookie和session:id相同

session cookie
保存的位置 服务端 客户端
安全性 较安全 较不安全
保存内容 object string

作用域
共同方法:(Object getAttribute(String name):根据属性名,或者属性值)、(void setAttribute(String name,Object obj) :设置属性值(新增,修改))(setAttribute(“a”,“b”) ;如果a对象之前不存在,则新建一个a对象 ; 如果a之前已经存在,则将a的值改为b)(void removeAttribute(String name):根据属性名,删除对象)

作用域 对象类型
pageContext 当前页面 page对象
request 同一次请求有效(请求转发有效;重定向无效) 请求对象
session 同一次会话有效(无论如何跳转都有效) 会话对象
application 全局有效(当前项目和运行期间均有效) 全局对象

内置对象
out:(输出对象,向客户端输出内容)、request(请求对象;存储“客户端向服务端发送的请求信息”)、response(响应对象、主要方法:增加Cookie、重定向、设置响应编码)、session(会话、服务端)(客户端的cookie和服务端的session一一对应)(session方法)(cookie:相当于本地缓存的作用、cookie不是内置对象,需要new)、application(全局对象)、config(配置对象:服务器配置对象)、page(当前页面对象)、exception(异常对象)、pageContext(jsp页面容器)
JSP访问数据库:就是将 java中的JDBC代码,复制到 JSP中的<% … %>
Jstl:使用:引入jar包、引入tablib、c为前缀
通用标签库:(< c:set>可以给普通和map对象、变量、不存在的变量赋值,但是不能给不存在的对象赋值)、(< c:out value=""> :显示(显示不存在的数据可以default))、(< c:remove >:删除属性)
条件标签库:单重选择(< c:if test="" >)多重选择(< c:choose> + < c:when test="">)(在使用 test="" 一定要注意后面是否有空格,加空格会变成字符串,也就是非true)
迭代标签库:< c:forEach items="${…}" var="" varStatus="">

javabean: jsp中登录操作的代码转移到类中、简化代码、提高代码复用
使用层面:封装业务逻辑、封装数据
a.public 修饰的类,public 无参构造
b.所有属性(如果有) 都是private,并且提供set/get (如果boolean 则get可以替换成is)
EL表达式:为了消除jsp中的Java代码、语法:$ {EL表达式}、$ {requestScope.对象.属性.属性的属性 }、调用属性实质是在调用get方法、使用操作符:点或者中括号(使用双引号/单引号引起来、可以容纳特殊字符、变量和数组)、map的key取值、逻辑运算符$(3>2)、empty运算符、 $ {empty.对象.属性 }、隐式对象(pageScope、requestScope、sessionScope、applicationScope)、参数对象(表单数据、超链接数据、地址栏值数据、 ${param}、 ${paramValues})、jsp内置对象( ${pageContext.方法名去掉()和get并且将首字母小写}、级联方法)

Servlet

编码:中文参数问题(< meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>)(request.setCharacterEncoding(“UTF-8”); )(response.setContentType(“text/html; charset=UTF-8”);)统一请求的编码(new String(参数.getBytes(“旧编码”),新编码);)(server.xml中 统一get方式的编码URIEncoding=“UTF-8”)
生命周期:加载(单实例化、执行一次)、初始化(执行一次)、提供服务、销毁、卸载回收
跳转:请求转发(request.getRequestDispatcher(" *.html").forward(request, response);)、重定向(response.sendRedirect(" *.html");)
自启动:自动实现相关代码的初始化:xml方式:(< load-on-startup>1< /load-on-startup>);’注解方式:(@WebServlet(value="/WelcomeServlet" ,loadOnStartup=1 ))
实现:Java类必须符合一定的规范:必须继承 javax.servlet.http.HttpServlet、重写其中的doGet()或doPost()方法
步骤:编写一个类,继承HttpServlet;重写doGet()、doPost()方法;编写web.xml 中的servlet映射关系
xml配置:请求项目的根目录被< servlet-mapping>中的< url-pattern>拦截,并根据名字找到对应的class目录
Servlet3.0与Servlet2.5的区别
Servlet3.0不需要在web.xml中配置,但需要在Servlet类的定义处之上编写注解@WebServlet(“url-pattern的值”)
匹配流程:请求地址与@WebServlet中的值进行匹配,如果匹配成功 ,则说明请求的就是该注解所对应的类
API详解:基于HTTP协议的软件包(继承关系)ServletContext类和ServletConfig接口的初始化参数的方法;ServletRequest和ServletResponse被转为HttpServletRequest和HttpServletResponse的方法、genericservlet是对servlet的简单实现或者空实现

MVC

M:Model模型:用JavaBean实现一个功能
V:View视图: 使用html js css jsp jquery等前端技术实现展示、以及与用户交互
C:Controller控制器 :接受请求,将请求跳转到模型进行处理;模型处理完毕后,再将处理的结果返回给请求处,使用Servlet实现控制器

三层架构

与MVN设计模式的目标相同,都是为了解耦合、提高代码复用率
三层表示:表示层(USL、视图层、前台用于与用户交互和界面显示,在WebContent中(jsp、js、html、css等)、后台用于控制跳转调用业务逻辑层,在Servlet包中(SpringMVC、struts2))、业务逻辑层(BLL、service层、接收表示层的请求调用并组装数据访问层,在service、manage、bll包中)、数据访问层(DAL、dao层、在dao包中)
三层间的关系:上层依赖于下层,下层处理后返回给上层
三层优化:加入接口(建议面向接口开发、接口 x = new 实现类();、Dao和service需要接口、servlet不需要)、使用DBUtil通用的数据库帮助类简化Dao层的代码量(实现数据库连接、Update操作提取冗余代码)

分页

5各变量:数据总数、页面大小、总页数、当前页、当前页的对象集合
mysql中limit基本实现方法:一般情况下,客户端通过传递 pageNo(页码)、pageSize(每页条数)两个参数去分页查询数据库中的数据,在数据量较小时使用 MySQL自带的 limit 来解决这个问题、基于行数、主键和排序方法实现大数据

文件上传与下载

文件上传:引入组件jar包、表单提交必须为post、添加属性 entype为"multipart/form-data"、注意上传项目目录由于重新编译而失效、上传类型和大小的限制
文件下载:不依赖jar包、jsp请求servlet并通过文件地址将文件转为输入流读到seervlet中,通过输出流将文件输出、需要设置两个响应头:(response.addHeader(“content-Type”,“application/octet-stream” )response.addHeader(“content-Disposition”,“attachement;filename=”+fileName );)下载时的文件乱码需要进行设置

过滤器

Filter:实现一个Filter接口、重新init()和destroy() 原理、配置过滤器、通过doFilter()处理拦截、通过chain.doFilter(request, response);放行、主要在jsp和servlet之间
通配符
dispatcher请求方式:request、forward、include、error
过滤器链:过滤器的先后顺序是由 < filter-mapping>的位置决定

监听器

Listen:监听对象实现接口(request(ServletRequestListener)、session(HttpSessionListener)、application(ServletContextListener))、配置监听器
监听对象:方法:监听开始和监听结束;ServletContext在容器启动自动创建;属性变更:(实现request(ServletRequestAttributeListener)、session(HttpSessionAttributeListener)、application(ServletContextAttributeListener)接口)(分别有add、remove和replace方法)
session解绑钝化和活化javaweb - session的绑定解绑,钝化活化JavaWeb—session活化与钝化

JAVA前端J2EEJAVA前端J2EE Spiro White 发布了12 篇原创文章 · 获赞 0 · 访问量 136 私信 关注
上一篇:J2EE学习笔记:Servlet


下一篇:[转载] Redis系统性介绍