java web一些入门学习经验

如果用dos来编译java文件,可能会无法使用javac来编译,究其原因还是配置path环境时,要用jdk绝对路径而不能用相对路径

当然在IDE里用相对路径就可以了

final申明的类不能被继承,方法不能被重写,修饰的变量变成常量,不可被修改

MVC

<%--  --%>该注释不会显示在客户端,

<!--  -->该注释会显示客户端

JSP内置对象之get和post的比较

1、get:以明文的方式通过URL提交数据,数据在URL中可以看到,提交的数据最多不超过2KB,安全性低但效率高。适合提交数据量不大,安全性不高的数据,比如:搜索,查询等功能

2、post:将用户提交的信息封装在html header内,适合提交数据量大,安全性高的用户信息。比如:注册,修改,上传等功能

JSP之请求重定向和请求转发比较

1、请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的
URL地址会改变

2、请求转发:服务器行为,request.getRequestDispathcher().forward(requset,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变

JSP的session对象

session表示客户端与服务器的一次会话

session是指用户在浏览某个网页时,从进入网站到浏览器关闭这段时间内,也就是用户浏览这个网站所花费的时间。

session实际上就是一个特定的时间概念

保存用户的状态量大机制

session和cookie

coookie的作用

1、对特定对象的追踪

2、保存用户网页浏览记录和习惯

3、简化登录

session和cookie对比

session是在服务端保存用户信息

session保存的是Object类

session随会话的结束而将其存储的数据销毁

session一般保存重要的信息

cookie实在客户端保存信息

cookie保存的是String类型

cookie可以长期保存在客户端

cookie一般保存不重要信息

使用URLEncoder.encode来指点编码,用URLEmcoder.decoder来解码

如果使用<jsp:forward>跳转之后,有如下特点:

1.  服务端跳转,跳转之后地址栏不改变

2.属于无条件的跳转。跳转之前的语句会执行,而跳转之后的语句将不会执行,那么如果现在在jsp中使用了JDBC的话,很明显必须在跳转之前进行数据库的关闭,否则数据库就再也无法关闭了。

如果使用response.sendRedirect()跳转的话,有如下特点:

1.客户端跳转,地址栏发生了改变

2.跳转是在所有语句都执行完之后才完成的操作

3.还要注意的一点就是这个跳转不可以传递request属性,也就是说不可以传递参数,request也无法取得参数值。

include指令和include动作比较

包含的内容不同:include指令包含的是文件的实际内容,二include动作包含的是页面的输出结果

转成的servlet不同:include指令是将主页面和包含页面转换成为一个servlet

include动作是将主页面和包含的页面转换为独立的servlet

创建servlet三步骤

*1、继承HTTPServlet

*2、重写doget(),dopost()方法

*3、配置web.xml

j2ee6.0,servlet3.0以上可用注解方式,简单

关于查看系统API缺少资源的问题,提示说需要导入缺少的jar包,其中该jar包是source或者src的jar包

有时候web网页跳转不正常,需要重启tomcat服务器

路径:servlet:可绝对可相对(有/,无/)

web.xml: 必须带/

日期类型与字符串类型的转换:

采用SimpleDateFormat类进行转换,具体方法如下。

1、定义SimpleDateFormat对象 SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

2、字符串转换成日期数据:Date d = sdf.parse("日期字符串");

日期数据转换成日期字符串:String sd = sdf.format(日期变量);

重写equals()方法必须重写jashcode()方法

尽量保证使用对象的同一个属性来生成hashCode()和equals()两个方法。在我们的案例中,我们使用员工id。

eqauls方法必须保证一致(如果对象没有被修改,equals应该返回相同的值)

任何时候只要a.equals(b),那么a.hashCode()必须和b.hashCode()相等。

两者必须同时重写

设计模式之单例模式

单利模式之一饿汉模式:类加载的时候便进行了创建

1、将构造方法私有化,不允许外部直接创建对象

2、构造方法用private修饰,用static静态创建一个对象,创建一个获取对象的static方法

单例模式之二懒汉模式:懒汉模式也就是将实例化代码new 放在了获取实例的类方法中。延缓了实例化的进度,也体现了封装。

单例模式

1:饿汉模式,加载慢,获取快,线程安全

2:懒汉模式,加载快,获取慢,线程不安全

单列模式分为:

饿汉式:声明的同时直接实例化。 特点:加载类时比较慢,但运行时获取对象的速度比较快,线程安全。

懒汉式:声明的时候不实例化。 特点:加载类时比较快,但运行时获取对象的速度比较慢,线程不安全。

实现单列模式的三个步骤:

1、将构造方法私有化,不允许外界直接创建对象。

2、声明类的唯一实例,使用private static修饰。

3、提供一个供外界获取实例的方法,使用public static修饰。

类内部
本包 子类 外部包

public  √
√ √ √

protected  √
√ √ ×

default  √
√ × ×

private  √
× × ×

修改web项目的名称后要相应的在properties中修改myeclipse的web中context-root的路径,改成修改后的web项目名称

ServletContext、HttpSession、ServletRequest对象的中属性的增加和删除有单独的事件监听器

XXAttributeListner

监听的事件包括

attributeAdded()

attributeRemoved()

attributeReplaced()

request.getAttribute的值获得是从request.setAttribute的值

request.getParameter是请求的参数值

在写CountPeople计算在线人数,且获取ip的demo时,每次部署项目前都得停止当前项目,然后开启。restart项目获取不到当前在线人数

OutputStream os = new FileOutputStream(filename,true);//true表示每次是追加;false表示每次覆写

守护线程:一般运行于后台,为其它的用户线程(运行在前台,处理具体任务)来服务,当所有的用户线程都消亡,没有可服务的对象,守护线程即会自动消亡。例如检测服务,常见例子如JAVA的垃圾回收机制。所有在守护线程里面不适合做计算以及业务逻辑的操作

创建方式:在线程启动之前(调用start()方法),调用setDaemon(threadName,true)来申明这个是守护线程即可   守护线程不能操作IO读写操作,因为一旦被服务的线程运行结束,守护线程就会停止运行,可能导致IO读写不完整。

四种解析方式:DOM SAX DOM4J JDOM

DOM使用步骤:

准备工作

1、创建一个DocumentBuilderFactory的对象

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

2、创建一个DocumentBuilder的对象

DocumentBuilder db=dbf.newDocumentBuilder();

3、通过DocumentBuilder对象的parser方法加载xml文件到当前项目

Document document = db.parse("books.xml");

sax解析xml

解析的时候,是startElement-characters-endElement , characters解析完一个属性,就到endElement,然后又解析一个属性又到endElement,最后解析完全部属性,到endElement又到startElement开始下一个节点。

xml的SAX解析并

将解析的内容及xml结构形式保存至Java对象中。

SAX解析:

1、获取一个SAXParserFactory的实例:SAXParserFactory factory = SAXParserFactory.newInstance();

2、通过factory获取SAXParser实例:SAXParser parser = factory.newSAXParser();

3、创建SAXParserHandler对象:SAXParserHandler handler = new SAXParserHandler();

4、将xml文件和解析方式handler加载到SAXParser实例:parser.parse("books.xml",handler);

JUnit是Java提供的一种进行单元测试的自动化工具。测试方法可以写在任意类中的任意位置。使用JUnit可以没有main()入口进行测试。

DOM4J在灵活性和对复杂xml的支持上都要强于DOM

DOM4J的应用范围非常的广,例如在三大框架的Hibernate中是使用DOM4J的方式解析文件的。

DOM是w3c组织提供的一个官方解析方式,在一定程度上是有所应用的。

当XML文件比较大的时候,会发现DOM4J比较好用

1.JUnit:Java提供的单元测试;@Test注解;采用JUnit不需要程序入口main方法

2.性能测试结果:几kB的xml文件;建议使用DOM4J解析

DOM-33ms

SAX-6ms

JDOM-69ms

DOM4J-45ms

工程右键build path --Add library--JUnit单元测试 --version:JUnit4

DOM:33,SAX:6

JDOM:69;DOM4J:45

DOM 有可能溢出

Junit4

1、测试方法上必须使用@Test进行修饰

2、测试方法必须使用public void进行修饰,不能带任何的参数

3、新建一个源代码目录来存放我们的测试代码

4、测试类的包应该和被测试类保持一致

5、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖。

6.测试类使用Test作为类名的后缀,例如CaculateTest(不是必须的)

7.测试方法使用Test作为方法名的前缀,例如testAdd()(不是必须的)

8.可以在左侧界面单独选择测试类

9.自动生成:右键新建一个JUnit Test Case——更改源代码目录——可以选择相应需要进行测试的方法

#Junit——运行流程#

几种测试方法的运行顺序:

[email protected]修饰的方法会在所有方法被调用前执行,该方法是静态的,在测试类被加载之后就会执行。在内存中只会存在一份实例。比较适合加载配置文件

[email protected]所修饰的方法通常迎来对资源的清理,如关闭数据库的连接

[email protected]、@After会分别在每个测试方法前后执行一次

web 过滤器

过滤器1放行 --> 过滤器2放行--->业务逻辑返回请求结果-->过滤器2放行-->过滤器1放行-->用户响应界面

在LoginFilter项目中给success.jsp添加过滤器,直接通过URL跳转前先判断是否已经登录

struts配置时登陆action最好不要用login,会和struts的保留字起冲突

Struts2接受参数:

1,使用Action的属性接受参数,在Action中定义需要接受的属性,并写它的set/get方法。

2,使用DomainModel接受参数,创建实体类定义需要接受的属性,并set/get方法,在Action中创建实体类名属性。并在界面进行指定。

3,使用ModelDriver接受参数,在Action中实现ModelDriver<实体类名>接口,并实现方法返回当前需要转换的对象,删除set/get方法,并对 对象 进行实例化,并取消指定。

4,request

5,获取List集合中的参数。获取多个参数。

学习了拦截器之后可以用拦截器来控制用户的权限

action配置了自定义的拦截器之后defaultStack会失效,我们可以把自定义的拦截器和fefaultStack拦截器组成一个拦截器栈来配置action

关于myeclipse配置hibernate也是折腾啊,版本问题!     myeclipse添加hibernate4.1,但myeclipse最高支持3.3.要么自己手动导入4.1的jar包,要么就用3.3的hibernate

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-19 17:40:01

java web一些入门学习经验的相关文章

Java Web快速入门——全十讲

Java Web快速入门——全十讲 这是一次培训的讲义,就是我在给学生讲的过程中记录下来的,非常完整,原来发表在Blog上,我感觉这里的学生可能更需要. 内容比较长,你可以先收藏起来,慢慢看. 第一讲(参考<Java Web程序设计基础教程>第1章)1 JSP 和 Java的关系 一般Java指的标注版 Java SE   另外两个版本:Java EE 和 Java ME JSP属于Java EE的一部分.   Java EE:     组件:Web层组件(JSP+Servlet)+业务层组件

Web前端入门学习(2)——HTML常用标签

HTML标签 a标签 a标签是一个超链接标签,用于从一个页面链接到另一个页面.在<Web前端入门学习(1)>有提到过4个伪类,分别是a:link.a:visited.a:hover.a:active. a:link代表的是未访问过的链接,当访问者首次打开网页未点击链接时,所表现的形式: a:visited代表的是访问过的链接,相对于link,是访问者点击了连接后,所表现的形式: a:hover代表的是当鼠标经过链接上面时所表现的形式,鼠标经过后,链接会有所变化: a:active代表的是当用户

Java Web 从入门到精通(部分练习)

<Java Web 从入门到精通>——这是老师给我们的,我发现这里面的东西很全面,也很详细,不愧是老师给我们的.我想这周的作业按照上面的做一些练习. 换行标记符<br>    标记开头<p>结束</p>    居中标记<center> 6个标题标记<h1>至<h6>数字越小,字体越大 无序列表标记<ul>   有序列表标记<ol> 表格标记<table> width border表格边框

Web前端入门学习(5)——浮动原理及清除浮动

浮动原理及清除浮动 上节回顾 在上节的<Web前端入门学习(4)-- 块级元素和行内元素之特征与转换>中(http://cherry360.blog.51cto.com/12176744/1863945),介绍了块级元素和行内元素的特征,及粗略介绍了如何进行转换.加上display属性,可以指定元素的类型,如display:block.display:inline,以及display:inline-block.当然用得最多的是最后一个display:inline-block.结合例子来看: 例

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

JAVA WEB快速入门之环境搭建

前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得顺应潮流,” 精通 “ JAVA  ^ v ^,当然.NET CORE也是我同步学习与研究的方向,甚至还有PYTHON,活到老学到老. JAVA我之前也涉猎过一些,也看过一些JAVA代码,但并没有系统的学习及深入的了解JAVA WEB框架及底层原理,我准备借此机会,由基础到入门到熟练,由浅入深的全面

Web开发入门学习笔记

公司web项目终于要启动了,本以为django学习可以在实战中进行,结果最终使用了Drupal框架,好吧,那我们就PHP走起,买了本<细说PHP>,先跟着过一遍Web开发入门. HTTP协议 HTTP协议:所有的WWW文件都必须遵守HTTP协议,HTTP是客户端浏览器或者其他程序与Web服务器之间的应用层通信协议.HTTP协议建立在TCP/IP协议,也就是说,是一种可靠的传输协议,意味着两台设备在传输之前必须先建立可靠连接(握手),由客户端发起到服务器端的指定端口(默认为80)HTTP请求,并

Java开发工程师(Web方向) - 01.Java Web开发入门 - 第4章.Maven

第4章--Maven Maven实战 Java Web应用的部署: 手动式: 编译:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/classes/package/NoodlesServlet.java 打包:jar cvf Restaurant.war . 移动:mv Restaurant.war .../webapps/ 项目复杂时:比如项目文件很多 -- IDE如eclipse --> IDE式:(如eclipse) 下载第三方依赖

转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程

本文是一篇在Myeclipse下构建Java Web项目的初级教程.图文并茂,非常详细.所用的Myeclipse版本是7.5. 第一步:新建Web Project,如下图. 第二步,在弹出的窗口填写下面内容.Project Name填写的内容是项目名称:J2EE Specification Level选择Java EE 5.0,点击“Fininsh”按钮,进入下一步. 第三步,新建的项目结构如下图.项目包含下面几个包,一个src,一个Webroot,还有JRE...和Java EE...这个两个