Java Web开发学习笔记(一)

代码自动补齐

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)

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

 

<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()方法,返回参数与方法名之间的对应关系

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值