代码自动补齐 |
ALT+/ |
智能提示功能 |
Ctrl+1 |
自动添加Setters和Getters |
source-->generate Getters and Setters |
自动代码格式化 |
Ctrl+Shift+F |
自动导入未导入的类 |
Ctrl+Shift+0 |
注释快捷键 |
Ctrl+Shift+C |
1.设置字符集:Window-->Preferences-->General-->Workspanve-->TextfileEncoding
2.给Tomcat中添加管理员账户:
修改tomcat--->conf-->tomcat-users.xml文件,
启动tomcat之后在"http://loacalhost:8080/manager/html"中修改
3.XML的DTD声明:
内部DTD:]>
外部DTD本地文件
外部DTD公共文件
4.Java Web应用程序所需的目录结构
属性 |
说明 |
WEB_INF/ |
存放class文件jar文件和配置文件 |
WEB-INF/web.xml |
配置该应用程序的信息资源:Servlet 、过滤器、监听器、系统参数等 |
WEB-INF/classes/ |
用于存放class文件,也是该Web应用程序的类加载路径 |
WEB-INF/lib/ |
用于存放第三方库jar文件 |
<应用文件的根目录> |
用于 存放静态页面、JSP文件和其他资源文件 |
5.Servlet
最基本的服务资源,在Web容器中运行,Web容器利用Java的反射机制,在合适的时机回调Servlet接口里的方法来使Servlet工作。
开发Servert步骤:
1)编写Servlet源码并编译
2)在web.xml进行相应的配置
3)将包含该Servlet的Web应用程序部署到Web容器里,并启动Web容器
4)通过浏览器访问该Servlet
Servlet的生命周期:加载-->初始化-->提供服务-->销毁
6.session:会话,一个用户和服务器端的一次较长期的联系,Web容器会在用户第一次请求的时候在其本身和客户端浏览器的cookie里加入一条名字为“jsessionid”的数据,一旦浏览器关闭,jsessionid丢失,一个浏览器带仪表一个session,tomcat默认有效期是30min。
//保存用户名到会话中去
request.getSession().setAttribute("username",username);
7.Servlet转发HTTTP请求
1)直接请求转发
//获取请求转发对象,该转发器的指向通过getRequestDispatcher()的参数设置
RequestDispatcher reque4stDispatcher =request.getRequest Dispatcher("资源的URL");
//调用forward()方法,请求
requestDispatcher.forward(request,response);
2)间接请求转发,重定向,比如定向到登录界面
response.sendRedirect("资源的URL");//重定向请求到另外的资源
8.过滤器:在浏览器和目标资源之间过滤
chain.doFilter(request,response);
9.Web应用程序时间:
request |
请求 |
生命周期是从请求开始知道请求响应结束,中间可能穿插多个信息资源,过来长期Servlet,JSP等 |
Session |
会话 |
一次会话,可能包含多个请求 |
Application |
应用 |
用于存放标题,其他的外部资源连接器,代表一个Web应用 |
1)Request事件监听器接口ServletRequestListener
//请求销毁时的代码
public void requestDestoryed(ServletRequestEvent arg0){}
//请求初始化时的代码
public voidrequestInitialized(ServletRequestEvent arg0){}
2)Session事件监听器接口HttpSessionListener
//会话创建时的代码
public voidsessionCreated(HttpSessionEvent arg0){}
//会话销毁时的代码
public void sessionDestoryed(HttpSessionEvent arg0){}
3)Application事件监听器接口ServletContextListener
//应用销毁时的代码
public void contextDestoryed(ServletContextEvent arg0){}
//应用初始化时的代码
public voidcontextInitialized(ServletContextEvent arg0){}
将数据存储到Application
application.setAttribute("count",count);
将数据从Application中取出
application.getAttribute("count")
10.JSP(Java Server Page)是一种建立在Servlet规范提供的功能之上的动态网页技术,本质是Servlet,可以实现动态静态内容分离。
1)JSP元素
指令元素:<%@指令名 属性名="属性值" [属性名="属性值"...] %>
可以为page(设置页面属性)、include(其他内容的导入)、taglib(引入一个标签库)
<%@ page language="java"pageEncoding="UTF-8"%>
<%@ include file="XXX.jsp"%>
<%@ taglib uri="唯一标识符" prefix="前缀" %>
脚本元素:
声明:添加成员变量代码public、private、protected
脚本段:添加代码到服务器方法
表达式:表达式的返回值
动作元素:
2)注释:
HTML |
|
Java |
//注释内容 /*注释内容*/ |
Jsp注释 |
<%--注释内容--%> |
3)Jsp的内置对象及作用
Application |
javax.servlet.ServletContext |
代表Web应用程序,Servlet上下文 |
session |
javax.servlet.http.HttpSession |
Http会话对象 |
request |
javax.servlet.http.HttpServletRequest |
请求对象 |
response |
javax.servlet.http.HttpServlet.Response |
返回对象 |
out |
javax.servlet.jsp.PageContent |
写出流对象,用于返回数据给客户端 |
page |
java.lang.Object |
普通的页面对象 |
pageContext |
javax.servlet.jsp.PageContext |
页面的上下文,代表一个页面的运行环境,可以获取到其他对象 |
exception |
javax.lang.Throwable |
用于错误页面,通过该对象可获得异常的详细信息 |
config |
javax.servlet.ServletConfig |
配置对象,用于获取初始化参数等数据 |
11.Servlet和Jsp中访问数据库javaApi----JDBC
Java程序方法java---classpath中
JavaWeb放在WEB-INF/lib中
Class.forName("数据库驱动的完整类名");
Connectionconn=DriverManager.getConnection("连接URL","用户名","密码");
Statement stmt = conn.createStatement();
stmt.executeUpdate("增删改");
ResultSet rs = stmt.executeQuery("查");
while(rs.next()){对记录的操作}
rs.close();
stmt.close();
conn.close();
12.可重用组件JavaBean和EJB
JavaBean |
set和get的方法来构造属性,可以用普通的java脚本来实例化这个类 |
EJB |
Jboss和GlassFish等符合JavaEE的服务器中使用 |
JSP使用JavaBean的标签详解
用JavaBean封装数据库底层处理
13.用表达式语言(EL)简化JSP展示数据
EL(ExpressLanguage)用于在JSp页面上生成动态内容,并代替JSP脚本元素
. |
允许使用一个Map键或一个bean性质名来访问值 |
[] |
可以访问数组和List |
+/- |
${2*2 + 3*3} |
*/div/ |
${5 div 3};${5/3} |
mod % |
${5 mod 3} |
a+b |
${param.a+param.b} |
true|false |
and|or|not &&||! |
Empty |
String:真:null或空字符串 普通Java对象:toString()后,null或者空字符串返回真 数组、链表、Map:null或者长度为0返回真 |
命名变量,El解析器会按照以下顺序在各个Jsp作用范围中搜索属性
1)页面作用域(pageContext)
2)请求作用域(request)
3)会话作用域(session)
4)应用作用域(Application)
EL的隐含对象,
对象名称 |
描述 |
pageContext |
代表是JSp的隐含对象pageContext |
pageScope |
用于访问页面作用范围的属性 pageScope.abc相当于pageContext.getAttribute("abc") |
requestScope |
用于访问请求作用范围的属性 |
sessionScope |
用于访问会话作用范围的属性 |
applicationScope |
用于访问应用作用范围的属性 |
param |
用于获取请求的参数 |
paramValues |
用于获取请求的某个参数的所有值 |
header |
用于获取HTPP请求头的数据 |
cookie |
用户获取Cookie的键值对数据 |
initParam |
获取Servlet上下文初始化参数的值 |
14.JSP标准标签库(JSTL)
功能范围 |
URI |
前缀 |
核心标签库(core) |
http://java.sun.com/jsp/jst/core |
c |
数据库相关标签库(SQL) |
http://java.sun.com/jsp/jst/sql |
sql |
XML相关标签库(xml) |
http://java.sun.com/jsp/jst/xml |
x |
国际化标签库(il8n) |
http://java.sun.com/jsp/jst/fmt |
fmt |
函数标签库(functions) |
http://java.sun.com/jsp/jst/ffunctions |
fn |
|
向Jsp的输出流打印一个表达式的结果 |
|
向特定的作用范围设置一个属性对象或设置一个JavaBean的属性值 |
|
用于删除特定作用范围的变量 |
|
迭代,用于访问和显示数据集 |
|
简单的对单个测试表达式进行求值 |
|
复杂布尔表达式 |
|
生成URL |
|
准备数据源
|
|
执行sql指定的SQL语句 语法一:用SQL属性指定SQL语句 语法二:用标签体指定SQL语句 |
|
增删改 |
|
把一系列查询和更新操作打包到一个事物处理 |
函数标签库 |
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> |
fn:contains fn:containsIgnoreCase |
函数用于判断字符串是否包含某一字符串 fn:contains("源字符串","匹配字符串") fn:containsIgnoreCase("源字符串","匹配字符串") |
fn:startsWith fn:endsWith |
如果源字符串包含匹配字符串返回ture fn:startsWith("源字符串","匹配的开头字符串") fn:endsWith("源字符串","匹配的结尾字符串") |
fn:indexOf |
用于计算某一子串的下标位置 fn:indexOf("源字符串","匹配字符串") |
fn:length |
函数返回字符串的长度 fn:length("源字符串") |
fn:replace |
替换字符串中的某些内容 fn:replace("源字符串","匹配字符串","替换后的字符串") |
fn:substring |
截取字符串的一段 fn:substring("源字符串",开始下标,结束下标) |
fn:toUpperCase |
返回字符串的大写形式 fn:toUpperCase("源字符串") |
fn:toLowerCase |
返回字符串的小写形式 fn:toLowerCase("源字符串") |
15.使用log4j记录Web应用程序日志
Logger 组件 |
org.apache.log4j.Logger |
private Logger logger=Logger.getLogger(this.getClass().getName()); |
debug()调试信息 info()普通信息 warn()警告信息 error()错误信息 fatal()致命信息 |
Appender组件
|
Logger的目的地 |
org.apache.log4j.ConsoleAppender org.apache.log4j.FileAppender org.apache.log4j.DailyRollingFileAppender org.apacher.log4j.RollingFileAppender |
输出到控制台 输出到文件 按照指定的时间频率滚动生产日志文件 将日志输出到文件,当日志文件大小达到一定值得时候备份文件 |
Layout组件 |
一个APPender只能有一个Layout组件 |
org.apache.log4j.SimpleLayout org.apache.log4j.HTMLLayout org.apache.log4j.XMLLayout org.apacher.log4j.PatternLayout |
级别+信息 HTML XML 占位符控制样式 |
16.Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)指创建一种创建交互式网页应用的Web开发技术。
可以不刷新网页的情况下,更新页面
创建三级联动菜单
Ajax组成技术 |
|
技术名称 |
在Ajax里的角色 |
JavaScript |
解释型脚本语言,Ajax使用JavaScript语言写成 |
CSS |
CSS层叠样式表,用来控制界面样式 |
DOM |
文档对象模型,文档对象模型,Web对象的模型 |
XMLHttpRequest |
用来在后台向服务器端发送请求,数据的格式可以使任何文本格式,达成异步通信的的关键元素 |
17.SSH(Struts、Hibernate、Spring),MVC框架
Hibernate实现的对象与关系映射(ORM)的思想,Spring则是以来注入(IOC)和面向切面编程(AOP)的思想
Java Web开发模式一: |
使用JSP+JavaBean技术将页面显示和逻辑业务分开,由JSP来实现页面的显示,JavaBean对象用来保存数据和实现业务逻辑 |
模式二: |
MVC设计模式,模型(Model)、视图(VIew)和控制器(Controller) 相比模式一,将JSP中嵌入的控制请求流程的代码和部分逻辑代码提取出出来,有控制器承担 |
Structs高级特性:解决一个Action对应一个ActionForm的问题
名称 |
适用情况 |
使用简介 |
Action |
普通的Action |
直接适用即可 |
DispatchAction |
表单包含多个参数时适用 |
需要从客户端接收一个参数,该参数的值对应方法的名称 |
LookupDispatchAction |
表单包含多个提交按钮时适用 |
需要重载getKeyMethodMap()方法,返回参数和方法名之间的对应关系 |
MappingDispatchAction |
客户端不便于传递参数时适用 |
需要配置文件的 |
ActionForm |
数据量较大,或者用途比较广泛 |
直接使用即可 |
DynaActionForm |
数据量很少 |
在structs-config.xml里用XMl的格式定义ActionForm需要包含的属性及数据类型 |
LazyValidatorForm |
数据量不确定,仅少数情况下才会获取参数 |
需要重载getKeyMethodMap()方法,返回参数与方法名之间的对应关系 |