Struts(一)

Struts

基本概念:

1.什么是MVC?有什么用?

2.控制器的结构

3.什么是Struts?有什么用?

4Struts的内容与环境配置

 

什么是MVC?有什么用?

MVC是一种设计框架,程序流程清晰,便于维护

表现层                     中间层                     持久层

(web)                      (业务层service)          (data)

CV                         M                       

 

我们重点看一下web层:

用户请求---C:做两件事情,第一,得到url(v1),第二,查看url对应得动作action---action

Action访问中间层M层得到结果,查看这个结果对应得url(v2)---C---v2

 

Jsp---javabena模式的缺点在于流程非常复杂,所以mvc解决了这个问题,所有的流程在C,中心控制器,但是,如果我们需要再添加或修改一些动作的话,还是要修改C中心控制器的,这样不大方便,那么Struts框架解决了这个问题

 

控制器的结构:

C(中心控制器)也叫前端控制器:所有的请求和返回都要通过它

C后面是多个action,它帮助CM进行交流的

 

什么是Struts?有什么用?

MVC的实现,实现了C中心控制器,我们看一下Struts框架的MVC

V1---C(ActionServlet)---xml(struts_config.xml):通过这个文件得到url(v1)对应的action---action---xml通过这个文件得到和结果对应的url(v2)---action---C---v2

这样,所有的流程在这个xml文件中,那么要添加或者修改action的时候,我们不需要修改C,这个Cservlet类,只要修改Strust_config.xml就可以了

 

Struts的内容与环境配置

1.版本问题:StrutsTomcat里面的包要保持一致,我们可以先将一个空的Struts环境备份好

位置:struts/参考资料/lib/ struts-blank.zip

2Struts环境:

struts-blank.zip解压到tomcatwebapps

WEB-INF/web.xml struts_config.xml and tld

WEB-INF/lib:struts and app 所需要的包

WEB-INF/classes/ resources:资源文件,做国际化的

Struts_config.xml:这个文件就是实现了控制器的流程

 

web.xml:

<load-on-startup>2</load-on-startup>:Tomcat启动的时候,马上加载这个servlet类到内存中

*.do拦截方式叫做单点接触

 

Struts_config.xml:

<action-mappings>:这里面都是actionurl的映射

<action path=”url” type=”action”>

<forward name=”action return rst” path=”rst url”>

</action>

 

Struts的工作流程:

web应用启动,便会加载ActionServlet类,这个类常驻内存的,当用户发送请求的时候,ActionServlet读取Struts_config.xml,将得到的信息保存到相应的对象中,例如,将url对应的action保存到ActionMapping对象中

 

ActionServlet的工作流程:

当接到请求后,调用process()方法,将请求交给RequestProcessor的实例来处理,在struts1.1后,请求的处理者变成了RequestProcessor

 

RequestProcessor的工作流程:

1.什么是RequestProcessor?有什么用?

这个类接收来自servlet的每一个请求,我们可以自己定制请求的处理功能,需要继承这个类,并且在struts_config.xml中改写<controller>标签

2.工作流程:

processMutipart():在这个方法中,Struts将会读取request来检查requestcontentType是否是multipart/form-data。如果是的话,将会解析request并且将之包装到HttpServletRequest中。当你创建了一个HTML FORM用来提交数据,那么requestcontentType默认就是application/x-www-form-urlencoded。但是如果你的form使用了file类型的input控件允许用户上传文件的话,你就必须将contentType改为multipart/form-data。如果是这样的情况,你就不能再通过getParameter()来获取用户提交的数据;你必须将request作为一个InputStream来读取,并且自己解析它来获得参数值

 

processPath():String path = processPath(request, response);得到url

 

processLocale():确定客户端的位置,做国际化的,再一个调用这个方法会创建一个HttpSession,如果不想被创建,可以在struts_config.xml中设置不调用这个方法,<controller>

 <set-property  property="locale" value="false"/>

</controller>

 

processContent():通过调用response.setContentType()来为response设置contentType。这个方法首先会尝试从struts-config.xml配置中得到contentType。缺省情况下使用text/html。如果想覆盖它,可以象如下这样:

<controller>

 <set-property  property="contentType" value="text/plain"/>

</controller>

 

processNoCache():可以解决输出的时候出现缓存response的问题

如果配置是no-cacheStruts将会为每个response设置下面三个headers

requested in struts config.xml

response.setHeader("Pragma", "No-cache";

response.setHeader("Cache-Control", "no-cache";

response.setDateHeader("Expires", 1);

如果你想设置no-cache header,在struts-config.xml中加入下面信息:

<controller>

 <set-property  property="noCache" value="true"/>

</controller>

 

processPreprocess():回调方法,里面的内容为return true;返回为true,控制器继续执行,否则停止,我们可以重写这个方法来控制中心控制器是否继续执行(这个方法为预处理提供一个hook(钩子),可以在子类中覆盖它。它的缺省实现没有作任何事情,总是返回true。返回false的话将会终止当前请求的处理)

 

processMapping():   

ActionMapping mapping = processMapping(request, response, path);

    if(mapping == null) {

        return;

    }

通过url得到ActionMapping对象,这个对象存放的是url-action,rst-url映射的信息

这个方法将会用路径信息得到一个ActionMapping对象。也就是struts-config.xml文件中的<action>元素:

<action path="/newcontact" type="com.sample.NewContactAction"

        name="newContactForm" scope="request">

 <forward name="sucess" path="/sucessPage.do"/>

 <forward name="failure" path="/failurePage.do"/>

</action>

ActionMapping元素包含了Action类的名称和处理请求使用的ActionForm等等信息。它还包含当前ActionMapping配置的ActionForwards信息

 

processRoles():struts的安全机制

Struts web应用提供了一个授权方案。也就是说,一旦一个用户登入了容器,strutsprocessRoles()方法将会通过调用request.isUserInRole(),来检查他是否有必须的角色来运行一个给定的ActionMapping

<action path="/addUser" roles="administrator"/>

假设你有一个AddUserAction并且你只想让administrator能够增加新的user。你所要做的就是给你的AddUserAction元素增加一个role属性,这个属性的值为administrator。这样,在运行AddUserAction之前,这个方法会确保用户拥有administraotr的角色

 

processActionForm():ActionForm就是一个javabean,这个类是用来存储并处理表单数据的,首先会去request scope中找这个对象,如果没有,创建一个,有得话就从里面拿出来直接用,每一个ActionMapping都一个相应的ActionForm类。当Struts处理一个ActionMapping的时候,它将会从<action>元素的name属性中找出对应的ActionForm类的名称。

<form-bean name="newContactForm"

           type="org.apache.struts.action.DynaActionForm">

  <form-property name="firstName"

                          type="java.lang.String"/>

  <form-property name="lastName"

                          type="java.lang.String"/>

</form-bean>

 

processPopulate():这个方法就是将表单的参数封装到ActionForm对象

 

processValidate():表单验证Struts将会调用你的ActionForm类的validate方法。如果你从validate()返回ActionErrors,它将会将user重定向到<action>元素的input属性指定的页面

 

processForward():检查mapping中有没有使用流转标签,找到后使用,功能相当于RequestDispatcher.forward(),流转到指定的url

 

processInclude():检查mapping中有没有使用包含标签,找到后使用,功能相当于RequestDispatcher.include(),将一个指定的url包含

如果上面两个方法都设置了,只会调用forward()

 

processActionCreate():这个方法从<action>标签中的type里得到action类,创建这个类的实例

 

processActionPerform():这个方法调用actionexecute()方法,execute()这个方法一般写业务逻辑的,我们在写action的时候,会继承action类,实现execute()这个方法

 

processForwardConfig():通过上面的步骤,requestProcessor为我们创建了一个ActionForward的实例,也就是execute的返回值,在这个对象中有nextUrl,也就是action得到的rst对应的path,这个path就是nextUrl,然后创建这个urlRequestDispathcher对象,再调用这个对象的RequestDispathcher.forward()方法

 

以下是RequestProcessor的部分源代码:

public void process(HttpServletRequest request,HttpServletResponse response)

    throws IOException, ServletException {

        // Wrap multipart requests with a special wrapper

        request = processMultipart(request);

        // Identify the path component we will

        // use to select a mapping

        String path = processPath(request, response);

        if (path == null) {

            return;

        }

        if (log.isDebugEnabled()) {

            log.debug("Processing a '" + request.getMethod() +

                      "' for path '" + path + "'";

        }

        // Select a Locale for the current user if requested

        processLocale(request, response);

        // Set the content type and no-caching headers

        // if requested

        processContent(request, response);

        processNoCache(request, response);

        // General purpose preprocessing hook

        if (!processPreprocess(request, response)) {

            return;

       }

        // Identify the mapping for this request

        ActionMapping mapping =

            processMapping(request, response, path);

        if (mapping == null) {

            return;

        }

        // Check for any role required to perform this action

        if (!processRoles(request, response, mapping)) {

            return;

        }

        // Process any ActionForm bean related to this request

        ActionForm form =

            processActionForm(request, response, mapping);

        processPopulate(request, response, form, mapping);

        if (!processValidate(request, response, form, mapping)) {

            return;

        }

        // Process a forward or include specified by this mapping

        if (!processForward(request, response, mapping)) {

            return;

        }

        if (!processInclude(request, response, mapping)) {

            return;

        }

        // Create or acquire the Action instance to

        // process this request

        Action action =

            processActionCreate(request, response, mapping);

        if (action == null) {

            return;

        }

        // Call the Action instance itself

        ActionForward forward =

            processActionPerform(request, response,

                                action, form, mapping);

        // Process the returned ActionForward instance

        processForwardConfig(request, response, forward);

    }

 

第一个Struts应用:

1.配置环境

2.开发步骤

 

配置环境:

1.将模版拷贝到tomcat webapps目录下

2.配置需要的lib:如数据库的包

 

开发步骤:

1.需求分析 程序目标 程序逻辑

2.写jsp页面

3.写struts_config.xml文件,配置流程

4.写action

5.写M

 

环境配置:

web项目根目录:first_struts

     /first_struts

     /first_struts/JS

     /first_struts/pages login.jsp success.jsp

     /first_struts/pice

     /first_struts/WEB-INF : web.xml struts_config.xml

                    /WEB-INF/classes

                    /WEB-INF/lib

                    /WEB-INF/src

                             /src/yuchen.first.LoginAction.java

程序目标:

测试struts应用,用户进入登陆页面,当提交数据的时候,显示登陆成功页面

Jsp:

Login.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

     <form action="/first-struts/login.do" method="post">

         userName: <input type="text" name="user"/><br>

         password: <input type="password" name="pwd" /><br>

         <input type="submit" />

     </form>

</body>

</html>

 

success.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

</head>

<body>

     <h1>success!</h1>

</body>

</html>

 

LoginAction.java:

package yuchen.first;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

 

public class LoginAction extends Action{

     public ActionForward execute(

              ActionMapping mapping,

              ActionForm form,

              HttpServletRequest request,

              HttpServletResponse response

              )throws java.lang.Exception

     {

        //通过从mapping中找forward标签中的值为successname所对应的nextUrl

         //生成ActionForward对象,里面有nextUrl

         return mapping.findForward("success");

        

     }

}

 

struts_config.xml:

添加这段代码

        <action

            path="/login"

              type="yuchen.first.LoginAction">

              <forward name="success" path="/pages/success.jsp"/>

     </action> 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值