代码自动补齐 | 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文件,
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager" password="admin"roles="manager"/>
<user username="admin" password="admin"roles="manager"/>
</tomcat-users>
启动tomcat之后在"http://loacalhost:8080/manager/html"中修改
3.XML的DTD声明:
内部DTD:<!DOCTYPE hello[<!ELEMENT hello(#PCDATA)>]>
外部DTD本地文件<!DOCTYPE 跟标签名称 SYSTEM"外部DTD文件的URI">
外部DTD公共文件<!DOCTYPE 跟标签名称PUBLIC"DTD的名称""外部DTD文件的URI">
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
脚本段:添加代码到服务器方法
表达式:表达式的返回值
动作元素:<jsp:动作名称 属性名="属性值"[属性名="属性值"...]>
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的标签详解
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
用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) | c | |
数据库相关标签库(SQL) | sql | |
XML相关标签库(xml) | x | |
国际化标签库(il8n) | fmt | |
函数标签库(functions) | fn |
<c:out> | 向Jsp的输出流打印一个表达式的结果 <c:out value="表达式" [default="默认值" escapeXML="true|false"]/> |
<c:set> | 向特定的作用范围设置一个属性对象或设置一个JavaBean的属性值 <c:set value="值" var="变量名称" [scope="作用范围"]/> |
<c:remove> | 用于删除特定作用范围的变量 <c:remove var="变量名" [scope="作用范围"]/> |
<c:forEach> | 迭代,用于访问和显示数据集 <c:forEach begin="开始数子" end="结束数子" [var="循环过程中的变量"] step="每次迭代的数量">每次循环打印的内容</c:forEach> |
<c:if> | 简单的对单个测试表达式进行求值 <c:if test="布尔表达式" [var="变量名" scope="作用范围"]>内容</c:if> |
<c:choose> | 复杂布尔表达式 <c:when test="布尔表达式">内容</c:when>...<c:otherwise>内容</c:otherwise></c:choose> |
<c:url><c:param> | 生成URL <c:url value="地址" [context="上下文" var="变量名称" scope="作用范围"]> <c:param name="参数范围" value="参数的值"/>...</c:url> |
<sql:setDataSource> | 准备数据源 <sql:setDataSource driver="驱动类名" url="连接字符串" user="用户名" password="密码" var="数据源保存的变量名称" scope="作用范围"/>
|
<sql:query> | 执行sql指定的SQL语句 语法一:用SQL属性指定SQL语句 <sql:query var="结果变量" sql="sql" [scope="作用范围" dataSource="数据源" maxRows="最大行数" startRow="起始行数"]>[<sql:param>指定sql参数]</sql:query> 语法二:用标签体指定SQL语句 <sql:query var="结果变量" [scope="作用范围" dataSource="数据源" maxRows="最大行数" startRow="起始行数"]>select语句[<sql:param>指定sql参数]</sql:query> |
<sql:update> | 增删改 |
<sql:transaction> | 把一系列查询和更新操作打包到一个事物处理 |
函数标签库 | <%@ 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 | 客户端不便于传递参数时适用 | 需要配置文件的<action>标签的parameter属性指定Action的方法名称 |
ActionForm | 数据量较大,或者用途比较广泛 | 直接使用即可 |
DynaActionForm | 数据量很少 | 在structs-config.xml里用XMl的格式定义ActionForm需要包含的属性及数据类型 |
LazyValidatorForm | 数据量不确定,仅少数情况下才会获取参数 | 需要重载getKeyMethodMap()方法,返回参数与方法名之间的对应关系 |