–Java EE学习心得
1. 称为编程专家的秘诀是:
思考-----编程--------思考------编程……..
编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程,完事后,再思考 我编的程序还有那些不好的地方和要改进的地方,可以增加写什么功能等等;然后再去编程;
2. 先搭建整体框架再抠细节,在编程中不管是什么要先做出来,再去问怎么做!即是:先Know how 载 Know why;
3. 学习软件编程是在琢磨别人怎么做,而不是我认为应该怎么做的过程;
4. java EE内容介绍及学习顺序:
5. 书籍收藏:
JSP应用开发详解(第三版)
Struts 基于MVC的 java Web
精通Ejb(2.1或3.0【现在很多公司还在用2.1的这可选择购买】)
精通Hibernate 该书讲得比较细可以当做手册使用
Spring in Action 中文版
6. java EE基本部分:
①:(Servlet)
知识点:
0:Tomcat的安装,介绍使用
1:如何开发servlet
2:HttpServletRequest,HttpServletResponse
3:Cookie的原理和使用
4:HttpSession 的原理和使用
5:ServletContext的原理和使用
6:用户的增加,删除,修改
7:如何做一个网站计数器
。。。。。。。。。。。。。
②:(–)
知识点:
1:Jsp版本的用户管理系统;
2:网上商城
3:仿百度查询系统
4:留言本
包含的知识点有:
0:eclipse+myeclipse的安装介绍和使用
1:jsp的基本语法
2:jsp的九大内置对象
3:html
4:javascript
5:javamail技术
6:jsp标签/自定义标签
7:mysql数据库的安装和使用……..
7. java EE高级部分:
①:(Struts)
知识点:
1:手写版本的(非工具自动生成的方式)struts用户登录系统
2:Struts版本的网上商城
包含的知识点:
1:struts的原理和配置文件的介绍
2:如何使用eclispe开发struts
3:struts标签的使用
②:(Ejb)
知识点:
1:用非自动生成的方式(手写版)开发一个Session Bean
2:网上在线词典(SessionBean实现)
3:网上宠物店(EntityBean实现)
4:仿qq(jms java message service 案例)
5:使用(messagedriven bean 消息驱动bean完成远程后台调用不同程序)
包含的知识点:
1:三大bean的原理及使用
2:weblogic/jboss配置使用
3:jms的配置使用
4:数据源的配置使用
5:分布式开发模式
6:异步开发模式
③:(Hibernate)
知识点:
1:用非工具自动生成的方式(手写版hibernate)开发学生管理系统
2:用eclipse 3.2再次开发学生管理系统(struts+hibernate)方式开发
包含的知识点:
1:什么是对象持久化技术
2:使用hibernate的好处是什么
3:传统的三层开发模式向四层开发模式的介绍
4:如何配置hibernate(详细介绍hibernate.cfg.xml和对象映射文件)
5:如何使用hibernate对数据库进行增、删、改、查(分页)
6:struts和hibernate如何结合
④:(Spring)
知识点:
1:用非自动生成的方式(手写版本Spring)开发一个计算器【重在原理】
2:用eclipse3.2再次开发学生管理系统或时bbs(struts+spring+hibernate)方式开发,【所谓的SSH构架】
包含的知识点:
1:什么是IOC(控制反转)
2:什么是DI(依赖注入)
4:数据源的配置使用
5:分布式开发模式
6:异步开发模式
8. 动态页面技术:
jsp vs asp
9. b/s 与 c/s 比较
10. Servlet和jsp的开发工具:
11. 理解Tomcat在网络中的位置:
(Tomcat具有①:web服务器;②:jsp容器;③:servlet的容器)
12. servlet与jsp的网络拓扑图:
13. servlet 的开发流程:
①:在%TOMCAT_HOME%\webapps下WEB-INF的文件夹,写一个文件web.xml(该网站的配置信息…),建立一个classes的子文件夹,也可以从别的目录 例 ROOT目录下拷贝也可以;
②:开发servlet(引入servlet-api.jar)
③:部署你的servlet在web.xml文件中:
④:启动TOMCAT,访问你的servlet,在浏览器的地址栏中输入:http://127.0.0.1:8080/myWebSite/hello 回车就可看到servlet的输出
注意: 127.0.0.1是服务器的所在IP 8080是端口号,要根据实际情况而改变
14. servlet的开发方式:
①:通过实现接口Servlet的方式开发(实现Servlet中未实现的方法);
②:通过继承GenericServlet,只需要重写service方法,相对简单些;
③:通过HttpServlet开发servlet,需要重写doGet、doPost方法。这是目前用得最多的
一种方法;
第三种开发方式中的doGet和doPost的一些说明:
比较内容 |
Get |
Post |
①:安全性 |
get < post,get提交数据会再浏览器的地址栏显示数据信息 |
安全性好 |
②:提交内容大小 |
g et < post,get提交的数据不能大于2K, |
post提交的数据理论上不受限制,但是实际编程中建议不要大于64K |
③:响应速度 |
get > post ,get要求服务器立即处理请求 |
Post请求可能相对较慢,请求可能形成一个队列请求 |
15. Servlet的生命周期:
init()初始化//当该servlet首次被访问时才会调用
destroy()摧毁、死亡//当服务器重新加载了Servlet或重启了服务器时该方法才会被调用;(手动调用销毁方法destroy()是不起作用的)
16. 解决网络传输的中文乱码的方法:
方法①: 此处要注意不要把“text/html;charset=gbk”的text与html顺序搞错,不然当访问时会弹出下载框,不在显示页面
res.setContentType(“text/html;charset=gbk”);
方法②:在tomcat 的conf 目录下的 servlet。Xml中是
方法③:使用String 重新转码 :(因为java在网络传输中是以”iso-8859-1”编码传输,因此要转码才行)
String str=”中文”;
new String(str.getBytes(“iso-8859-1”),”gb2312”);
乱码à新的解决办法和新的理解:
① 针对请求request的乱码 我们可以采取request.setCharacterEncoding(“utf-8”);只对pos请求起作用;
② 针对请求中的get的乱码我们可以再设置了方法①的同时修改服务器配置文件server.xml 把URiencoding=”utf-8”;
③ 针对渲染出乱码的情况可以把response.setCharacterEncoding("utf-8");
17. Servlet的使用方法
不管是实现接口servlet的方式 还是继承GenericServlet/ HttpServlet 类 在它们的类中都有类似的方法作为写逻辑代码的地方;每个方法的参数都有对应的两个参数,这两个参数在浏览器与服务器之间起着重要作用;如下:
①:实现接口Servlet 或者继承类GenericServlet的 类 :
方法:public void service(ServletRequest req , ServletResponse res){};
②:继承HttpServlet类 :
方法:
public void doGet(HttpServletRequest req ,HttpServletResponse res){};
public void doPost((HttpServletRequest req ,HttpServletResponse res){};
说明:以上方法的 参数 两两对应 作用效果是一样的
同一用户的不同页面共享数据:(重要技术)
1.cookie技术;
注意:在使用Cookie 时 name value 不能包含中文,不然会报传递不合法参数
如:例子
Cookie cookie=new Cookie(name , value);//参数类 String String
2.页面跳转的方法:
①:sendRedirect();转向(这种方法的效率并不高,下面会有提到另一个方法)
通过sendRedirect()这个方法传递数据
例子:response.sendRedirect(“url ? uName=value & password=value ”);/
/这里主要传递了两个参数 分别是别名为uName 和password 这两个参数,url为你要跳转页面的映射名字 当然在传递参数时必须要用“?”与url 隔开,传递多个则用 “&”隔开;
注意:解决sendRedirect();乱码问题,这是需要在接收处 做这样的接收处理:
u = new String(request.getParameter("uname").getBytes("ISO-8859-1"));
②:request.getRequestDispatcher(“要跳转的url”).forward(request,response);
说明:因为sendRedirect()方法效率不高,所有软件公司常常使用第②种方法即是(转发方法)
3.隐藏表单的提交
4.session技术(功能:①:保存登录用户信息;②:将某些数据放入到Session中,供同一用户的各个页面使用;③:防止用户非法登录到某个页面)
说明:当用户打开浏览器,访问某个网站时,服务器就回在服务器的内存为该浏览器 分配一个空间,该空间被这个浏览器独占。
这个空间就是session空间,该空间中的数据默认存在30min,当然,可以修改
l 如何使用Session
①:得到session :HttpSession hs=request.getSession(true);
②:向session添加属性: hs.setAttribute(String name,Object value);
③:从session中得到某个属性: Stringname=hs.getAttribute(String name);
④:从session删除掉某个属性: hs.removeAttribute(Stringname);
l 情空 Session的方法 invalidate();[清空所有session属性]
l Session 的注意事项:
5.ServletContext技术:
如何使用ServletContext:
1. 得到ServletContext的实例
this.getServletContext();
2. 添加属性SetAttribute(String name,Object obj);
3. 得到值(Value):getAttribute(Stringname);//return Object
4. 删除属性:removeAttribute(String name);
5. s生命周期:从创建到服务器关机!
ServletContext的一些实际应用 :
1. 网站计数器
2. 网站在线用户的显示
3. 简单的聊天系统
4. …………
总结:如果涉及到不同的用户共享数据,而这些数据量不大,同时又不希望写入数据库,我们就可以考虑使用ServletContext来时实现。
ServletContext 的注意事项:
因为ServletContext存在于服务器端而且其中的数据会长时间存在服务器,会占用内存,因此我们建议不要向ServletContext放入过大的数据。。。。切记!
说明:①:可以理解ServletContext为在服务器的一个公共空间共享于所有客户,可以被所有客户访问;
示意图:
18. servlet中显示图片:
用到的就是html中的标签:
pw.println(“”);
19. 分页技术:分页的算法:
我们需要定义四个变量,他们有各自的用处 :
int pageSize 每页显示多少条记录
int pageNow 希望显示第几条记录
int pageCount 一共有多少页
int rowCount 一共有多少行
说明:
pageSize 是指定的pageNow是用户选择的;
rowCount是从列表中的查询得到的;
pageCount 是计算出来的该计算式为:
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
针对前面提出的的问题,我们可能很自然地想到,
用select 字段名列表 form 表名 where id between ? and ?
比如显示第三页,该查询语句就是:
select *from 表名 where id字段 between 7 and 9
这个sql语句确实是别较快,但是它有一个问题,就是如果表的id被删除了
那么,某项可能就会少一条记录。
因此我们的最终解决办法是如下语句:
select top pageSize 字段名列表 from 表名 where id字段not in (select top
pageSize*(pageNow-1) ) id字段 from 表名)
//该语句的含义就是:排除你希望的前面的记录条数 (select top
pageSize*(pageNow-1) ) id字段 from 表名)
20. Servlet操作文件:
Servlet中操作文件跟javaSE中操作文件一样;
21. TomCat的配置
1. 如何修改TomCat的端口
修改TomCat 根目录下/conf/server.xml文件中的port“8080” 把8080修改成您需要的端口号;
端口号的设置范围:一般实际范围是在 1~65535 (即是两个字节的范围(1~1024 则是有名端口 一般不去使用))
2. 如何设置虚拟目录
说明:由于情况需要我们的站点需要放别的目录下比如tomcat所在的磁盘空间不够,或者为了统一管理,希望放在特定目录下而不放在默认的tomcat根目录下的webapps下等待
具体做法:打开tomcat安装目录下的conf子目录,修改其中的server.xml 在
3. 如何给TomCat 的管理员设置密码
在tomcat安装的目录下的tomcat-users.xml文件中可以给管理员设置密码,密码设置可以防止非法用户远程登录到tomcat。
4. 如何设置数据源和连接池(公司常用手法)
方法①:通过修改%Tomcat_Home%/conf/server.xml
在指定位置添加代码即可 代码文件》》
要使用到的类 : Context 类 ;javax.naming.InitialContext类 ; DataSource 类;使用方法:
//创建一个上下文环境对象
Context context=newjavax.naming.InitialContext();
//通过context 得到数据源
DataSourceds=(DataSource) context.lookup(“java:comp/env/数据源的名字”);
Con=ds.getgetConnection();//得到连接
方法②:通过tomcat管理界面来配置
22. JavaEE的十三种核心技术
①:JDBC
②: java命名接口和目录接口 JNDI
③:企业java Beans 简称:ejb
④:javaServer Pages JSP
⑤:javaServlet
⑥:java IDL/CORBA
⑦:java事务体系(JTA)/java事务服务(JTS)
⑧:javaMail
⑨:javaBeans激活框架(JavaBeans Activation Framework,【JAF】
十:java 信使服务(JMS)
十一:拓展标记语言(XML)
等。。。。
23. JSP(jsp=html+java片段+jsp标签+javascript(css))
1. Jsp的声明:
① :<%@.....%>指令
② :<%=.........%>表达式
③ :<%.........%>小脚本
④ :<%!.........%>声明函数
⑤ :<%--…..--%>注释(该注释在客户端是不可见的其是在服务器端注释的)
⑥ :
2. Jsp网络拓扑图
jsp的运行原理:访问jsp的过程特别须要清楚:如果jsp文件是第一次被访问,jsp文件会被服务器翻译成一个对应的java文件(servlet),然后再被编译成 . class 文件并加载到内存中;如果是以后访问jsp,那么就直接调用内存中的jsp实例,所以第一次访问jsp慢,后面访问jsp的速度就会变快了。
Jsp和servlet是对应关系
Jsp是以servlet为基础的
3. 如何接收jsp页面提交的数据,并处理
可以使用jsp内置对象 request 的getParameter();取得数据
同时使用java片段表达式<%= %>
4. jsp中如何使用java片段
在jsp中通过使用标签<% ……%>嵌入java片段,同时java片段可以用jsp内置对象的out对象 的out.println();方法把内容显示到客户端(浏览器)
5. jsp中如何使用javascript完成对数据合法性的校验
在jsp中,我们可以在
1. 新建一个类继承对应的监听接口 如:HttpSessionLinstener
2. 到web中配置下;