JAVA EE 学习笔记(一)

碎语:

学JAVA好几个月了,断断续续的,怕贪多嚼不烂一直都不敢学得太快,还是从基础开始学起。

先是大致看了下教程,然后再找了本《JAVA疯狂讲义》来进行学习,这本书讲得很细,这是个优点,也是它的缺点了,大部分还是完整看下来了,跳过后面一些章节,例如讲界面部分的内容可以大致看看,等到以后如果有需要的话去查询也是可以的。

近期正式进入web部分,这部分感觉和之前学过的php差不多,有许多概念都是重复的http响应头,之类内容算是有了一个较好的整合。

找的 韩顺平.2011最新j2ee视频教程 学习,基本一天学好几天的课程,速度比较快,觉得有必要做些笔记进行温习,不然容易忘记,至于练习的话则暂时不做,有php的经验,等到后面学Jsp的时候将 servlet ,jsp ,javabean一起来个统一练习。

笔记:

tomcat部分

1.tomcat运行需要设置环境变量主要是JAVA_HOME,CLASS_PATH,不然的话有些应用汇不正常。

2.tomcat的应用目录是webapps,应用的目录结构是 WebRoot –> WEB-INF ;WEB-INF目录下情况:classes,lib,web.xml。其中classes包含的是编译后的.class文件,lib包含的是应用需要的jar包,web.xml是服务的配置文件。程序源码并不需要发布到应用上面。

web.xml 文件,主要分层如下  service –> connector –> engine –> host->context

1.此文件可以配置servlet访问路径等信息,mapping 可以映射为 /* , *.do,/具体内容,各种形式,其采用的是最长匹配。

2.<load-on-startup>参数可以让servlet在后台启动,这个可以执行定时任务。

3<init-param> 可以配置变量被程序使用

Servlet部分:

1.servlet生存周期: 请求->反射方式装载类-> init()调用一次 ->使用service方法。

2.单例会出现线程同步问题。

3.现在基本继承 HttpServlet来实现功能。

Request & Response对象  主要是几个常用方法需要注意下

1.request.setCharacterEncoding(“utf-8”); response.setContentType(“text/html;charset=utf-8”) 可以进行编码设置,防止乱码的出现。

2.response输出流只能获取一次,之后系统会返回给用户然后自动关闭。

3.两者均有一个跳转 request.getRequestDispatcher(“path”).forward(request,response),response.sendRedirect(url) ,前者是服务器端进行的,可以附带请求和解析的转发,后者是浏览器的302重定向。

4.request主要用于获取客户机的一些信息,url,uri,queryString ,remoteAddr之类。

中文编码乱码处理

   这个比较麻烦,简单说是编码不一致导致的乱码问题。

   需要编码的地方:浏览器编码(request),web服务器编码,返回对象编码(response),文件编码,编译编码(jsp页面)。

   web服务器编码默认是iso-8859-1方式,浏览器默认get使用iso-8859-1(不确定,查协议再说),Post提交的数据encoding一下就可以了。

   如果是要生成url的话,就需要用URL Encoder Decoder 工具对其进行编码/解码了。

post get看实例:

//响应头设成utf-8编码 设置返回编码
    response.setContentType("text/html;charset=utf-8");
    
    //post直接对request 转码就可以  get转码是没用的
    request.setCharacterEncoding("utf-8");


    //如果不转码但是使用 以下方法     post or get都可以顺利转换编码
    String s = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");

    out.println( s  + "get  encode");
    out.println("自己设定的中文"); //这样是可以的
    System.out.println(s + "get提取"); //查看获取到的是否是好码
    out.println("<form name=’form1′ action=” method=’get’>");
    out.println("<input type=’text’ name=’name’>");
    out.println("<input type=’submit’ />");
    out.println("</form>");
    out.flush();
    out.close();

MVC模式

   这个是重点了,model view controller ,分层三块各司其职。   其中model可以细分为 业务逻辑,DAO,持久层。

model主要处理业务逻辑部分,实现业务需要的功能。

controller 主要负责请求的调度,根据请求转向不同的view调用不同的model来处理请求。

view  主要负责界面的显示。

如果用纯servlet实现的话,可以分 domain, service,view,controller 来进行编程。

 

 

个人小结:

不总结的时候以为什么都懂了,看一遍什么都知道了,学得快忘得也快,还需要看书巩固知识。同时需要学习下javascript,至少要会简单的判断。