【www.zhuodaoren.com--工作总结】
第一篇:《Java Web项目开发总结》
1、In Action
(1)根据添加信息(insert)来考虑表中的字段,进行建表。使用PD画出ER图。要注意字段的数据类型的确定以及建表要满足三范式,减少数据冗余;
(2)表建好后,根据表中各个字段来建pojo中的属性。要注意属性的数据类型和字段的数据类型要一致;
(3)根据pojo中的属性确定bean的属性,直接拷贝即可,用于页面展示。在bean中,统一使用String类型变量接收前台页面传递的参数;每个HTML表单对应一个bean。HTML表单中的字段和bean中的属性一一对应。
(4)自顶向下,依次定出action、manager、dao。先写出轮廓,跑通整个流程,再写具体实现,一点点累加,便于调试错误;
(5)根据数据实体和具体业务逻辑,使用StarUML画类图,进行OOA和OOD,灵活运用设计模式。
(6)API命名:
CRUD:add,get,update,delete,[list]
严格区分单复数形式,单数表示对象,复数表示对象集合。
对象、属性最好单个单词。
(7)前后台都要校验。
(8)按照资源方式组织数据接口,对前端开发帮助很大。即通过REST来实现资源的增、删、改、查。
(9)软件开发,思路最重要!代码开发多了,思路就有了。
a、一个版本一个版本递增的开发; 每个版本增加一点内容;
b、总结开发思路;第一步怎么做,下一步怎么做?
c、用文档记录开发的思路,即第一个版本开发实现了什么功能以及开发步骤,下一个版本实现了什么功能等等?
d、程序员进行程序开发时,不要仅仅停留在代码,要深入到底层的运行机制,才可以对程序的运行机制有更准备的把握;
(10)网页模板
request到template.jsp文件(此文件假设包括三个部分,即title、banner、body)
web客户——> title
banner———————>include:banner.jsp
body————————>include:showcart.jsp
(11)一步一步的定位。根据结果进行分析。
(12)分页控件
假分页:
基本思想是将所有的数据从数据库中取出,只显示有用的部分。靠的是程序的算法,实际上就是在ResultSet上进行操作。
真分页:(数据库中的一种实现)
任何数据库都会提供分页的函数操作:Oracle、MySQL(limit,即limit 开始的记录, 要查询的行数)、SQL Server(top)
基本思想是在数据库中编写特定的SQL语句。程序中只读取有用的部分,没用的部分不会加载到内存中。
(13)
2、TIPS
(1)、VO就是POJO。
(2)、先做完基本功能,然后对输入的数据进行验证。主方法中代码尽可能少,再考虑代码的可重用性。
(3)、当发现代码中重复地复制/粘贴时,就可以考虑将之形成为一个类进行调用。
(4)、在类的设计中,永远不要去继承一个已经实现好的类,只能继承抽象类或实现接口。
(5)、一个设计良好的类,应重写Object类中的equals()、hashCode()、toString()方法。
(6)、在action层中接收参数,要写健壮,要做空指针处理。
(7)、业务逻辑放到manage层,如if...else...不要放在action层,放在manage层处理。
(8)、dao层要写健壮,传入的是bean或map,返回的是bean或list。
(9)、查询:所有的记录总数以及查询第几页的数据;
(10)、多思考,尝试用不同、多种方法去解决问题。(发散性思维)
(11)、当程序中有0、1这样的数字或字符串出现时,最好用常量代替。常量名很重要,做到见名知意。
(12)、spring针对每一层(action.manager、dao)都有一个配置文件;ibatis有2个配置文件。sqlmap有namespace,每个实体类都对应一个xml配置文件。
(13)、类设计,编写时先完成基本功能的实现,然后再对实现功能的代码结构进行优化。
(14)
2、PS
(1)Java Web开发环境:JDK、IDE、java web服务器
JDK,一般指sun公司发布的JDK,也有其他的JDK,如IBM的JDK、BEA的JRocket等。从Java 5.0开始,Java web技术也称为Java EE。Java EE应用程序的运行需要Java EE类库的支持。
安装好JDK后,设置JAVA_HOME环境变量以及将JDK下的bin目录添加到PATH环境变量。
eclipse需要Java运行环境。
Eclipse WTP是Eclipse官方提供的web开发工具。
Java web服务器在Java EE规范中也叫做容器。
(2)web容器在启动时,从web.xml文件中读取配置信息,装载web应用。
web容器运行时,不会检测web.xml、struts配置文件的更新而重新加载它。
若struts框架不能处理的异常,会把错误抛给web容器。容器会查看web.xml文件中是否配置了<error-page>元素。若存在,则返回<error-page>元素的<location>子元素指定的错误页面。否则直接将错误抛给用户。
(3)webApp部署好后,启动Tomcat会自动发布webApp。首先是实例化Filter,并调用其init()方法初始化。然后根据<load-on-startup>的数值(数值为0或正数,数值越小越先加载)来依次加载servlet,并调用其init()方法进行初始化。
若没有为servlet配置<load-on-startup>属性,则当web应用启动时servlet容器不会加载这个servlet,只有当用户首次访问此servlet时才加载。
(4)
web调试时,一定要服务器以调试模式启动。然后在程序中打断点,通过浏览器访问,这样程序运行到断点处就会暂停运行。
(5)jsp放到WEB-INF文件夹中,可防止外界直接通过URL来访问Jsp页面,此时jsp一定要是servlet或action的后继页面,才可以被访问到。
(6)EL表达式是JSP2.0规范,需要Tomcat支持的。Tomcat6才支持EL表达式。
(7)编码
用户提交的查询数据(即get请求),默认采用的是ISO-8859-1编码。
request.setCharacterEncoding("utf-8"); //设置request编码方式,即设置使用utf-8来解析请求参数;
response.setCharacterEncoding("utf-8"); //设置response编码方式
(8)JNDI
JNDI:为某个java对象起一个名字。如为Tomcat中的数据源起一个名字,从而让程序可通过该名字访问该数据源对象。(Tomcat内置了DBCP的数据源实现)
若web应用访问了由servlet容器管理的某个JNDI资源,需要在web.xml中对这个JNDI资源的引用声明,表示资源引用的元素为<resource-ref>。
(9)session
servlet容器为HttpSession分配唯一标识符sessionID。servlet容器把sessionID作为cookie保存在客户的浏览器中。若浏览器禁止cookie,servlet容器可重写客户请求的url,把sessionID添加到url信息中。HttpServletResponse接口提供了重写url的方法:encodeURL(url)。
第二篇:《javaweb总结》
1、java web应用的目录结构:
web程序文件夹---- WEB-INF---- ---- web.xml
---- ---- classes (源程序对应的.class)---- ---- lib (程序用到的第三方库jar)
2、如何用javac来编译程序
a、需要用到j2ee相关的jar,将这些jar放到jdk/jre/ext下面
b、javac -d . *.java -->编译出package
3、web程序要部署到应用服务器上(应用服务器:tomcat/weblogic/websphere/jboss) a、方式1:将web程序文件夹拷到到tomat/webapps/下,即可
b、方式2:配置一个虚拟目录(不需要将web程序拷到tocat下)
server.xml中<Host>节点下,增加子结点
<Context path="/abc" docBase="d:/web程序文件夹"/>
4、Tomcat的安装
a、绿色版本,直接解压缩 (配置JAVA_HOME)
b、可执行文件版本 (安装时会让提示你选择JDK的目录)
应用程序部署目录为:webapps
http默认端口为8080,可以在server.xml中修改
7、在myeclipse中新建一个Web Project,
src:存放源程序的地方,最终编译到classes文件夹
WebRoot:此文件夹下的内容最终部署到web应用服务器中
常见错误:
404:文件没找到,一般是路径配置出问题
500:服务内部错误,一般是后台JAVA代码出问题
<welcome-file-list>配置欢迎页,可以配置多个
在Tomcat中运行的是Servlet而不是JSP,所有的JSP都会被编译成Servlet
在Tomcat/work目录下可以查看到JSP编译生成的Servlet
这个过程是如何实现的呢?
在Tomcat/conf/web.xml文件中,有配置
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> </servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
知道所以*.jsp请求都交给JspServlet处理
JSP语法:
3个指令:page, include, taglib
指令的用法:<%@ 指令名 属性1="属性值" 属性2="属性值" %>
<%@ 中间不能有空格
<%@ page %>
<%@ taglib %>
<%@ include %>
page指令:
pageEncoding="UTF-8"
import="java.io.File", 也可以 import="java.io.*,java.util.*"
还可以使用多个page指令
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
include指令:
<%@ include file="login.jsp" %>
include指令是如何工作的?
include指令会将另一个页面的代码包含进来一起编译生成一个文件
taglib指令:
引入标签库,可以是自定义的,也可以是J2EE自带的, JSTL标签库
JSTL标签库在j2ee1.4中不是自带的,在JEE5中是作为标准的一部分
<%@ taglib uri="prefix="c" %>
1、在JSP中嵌入JAVA代码, 在
<%
JAVA代码;
%>
<%=表达式%> , 结尾不要加分号
2、在JSP中声明一个方法或者属性
<%!
定义方法或者属性
%>
3、JSP的注释
<%
//JAVA的注释风格
/***/
%>
<!-- 这是HTML的注释 --> <%-- 这是JSP的注释 --%>
<!-- 这是html注释, <%=new Date()%> -->
3、JSP动作标签
<jsp:include page="xxx.jsp"/>
<jsp:include>动作标签与<%@ include>的区别:
<%@ include file="a.jsp">: 将a.jsp页面中的代码嵌入到当前页面,一起编译成一个单独的Servlet
<jsp:include page="a.jsp"/>:当前页面及嵌入的a.jsp页面单独编译成相应的Servlet
第三章:JSP的内置
1、JSP的九个内置:【javaweb项目总结3篇】
4种属性范围:pageContext, request, session, application
response, out, page, config, exception
其中exception对象只有当JSP页面设置了<%@ page isErrorPage="true"%>时,才存在 JSP的九个内置对象指的是JSP编译成Servlet类, 对应的Servlet类中定义了这9个对象 在JSP的<%。。。%>JAVA代码中可以直接使用这9个JSP已经定义好了的对象
<%request.getParameter("name");%>
2、tomcat/work目录下,存放JSP编译生成的Servlet源码及字节码
当某个JSP页面第一次访问时,才将些JSP编译生成Servlet,【javaweb项目总结3篇】
当第二次再访问此JSP时,直接加载运行第一次生成的Servlet字节码
如果某些JSP页面从未被访问过,那么不会将此JSP编译成Servlet
3、九个内置对象的用法,实际上就是这9个类的用法<重点>
HttpServletRequest --> request
HttpServletResponse --> response
HttpSession --> session
ServletContext --> application
ServletConfig --> config
pageContext, out, page, exception对象以后很少使用
4、页面(填写表单),提交到服务器(发送一个请求request,数据被包装在request对象中)(控制器MVC中的C)服务端对应有一个Servlet来处理页面提交过来的请求 处理完请求后M,根据处理结果判断,跳转到哪个页面(View),在页面中显示数据内容(JSTL/EL) 注:使用JSTL/EL取代在JSP中直接编写JAVA代码
M是什么?Model就是数据(普通的JAVA对象,一般指对应到数据库表结构的类, 比如Person/User)
5、4种属性范围
pageContext, request, session, application
这四个对象都有setAttribute(), getAttribute(), removeAttribute()
setAttribute(String, Object);
Object getAttribute(String);
pageContext: 设置的属性只能在当前页面访问
request: 设置的属性在一次请求中可以访问到,一次请求指的是向服务器发送一次(不关心服务器端是否有跳转)
一次请求的直观反映是,浏览器地址栏的地方没发生改变
session: 设置的属性在一个会话中可以访问到, (不同的用户的session是不一样的) (一个会话的结束:当浏览器关闭;当服务器重启;当调用session.invalidate()让session失效;当session超时timeout)
application: 设置的属性在整个应用中都可以访问到, 只要服务器不重启,设置的内容在任何时间任何地方随时可以访问到
范围的大小:(这四个对象是用于在不同的页面中传递数据的)
pageContext < request < session < application
如何选择使用这四个对象呢?遵循规则:选择够用的,范围越小越好,
一般选择request,极少情况使用session, 一般不用application。
原因:request对服务器没有负担,session在服务器端缓存数据,application直接与应用绑定(应用不关闭则application内容一直存在于服务器)
JSP9个内置对象:
request, response, session, application【javaweb项目总结3篇】
out, page, pageContext, config, exception
request:代表一个请求对象, 指的客户端向服务端发送的数据等
response:代表一个响应对象,指的服务端对客户端的一个反馈
session:代表一个会话(一般用于保存登陆用户的信息),数据存放在服务端上
cookie数组 = request.getCookies()
cookie它的数据是存放在本地, 它是不安全,不可靠
业务逻辑不能依赖于cookie
application: ServletContext, 指的就是部署在Tomcat上的应用
四种属性范围:(作用:进行数据传递)
pageContext: Servlet中不用
request: Servlet中最常用 (从Servlet传递到页面)
session: 不常用,一般只用于类似保存用户信息
application:一般不用,只用于全局的信息保存,比如统计用户在线人数
//存入key-value数据
对象.setAttribute(String key, Object value);
//读取key-value数据
Object value = (数据类型转换)对象.getAttribute(String key);
重点:Servlet
Servlet:在服务端运行的脚本,它是JEE的核心
Servlet分三类:
1、普通的Servlet
2、Filter过滤器
3、Listener监听器
Servlet:当客户端向服务器端发送一个请求时,服务器端会新建一个线程来处理(不是进程) 但Servlet不是线程安全的
线程安全:定义线程级局部变量,或不存取类的属性
线程不安全:
class A {
private String name;
public void test(String name) {
this.name = name;
}
}
A a = new A();
线程1:
test("aaa");
线程2:
test("bbb");
----------------------------------------------------------
ThreadLocal: 线程局部变量,为某个线程定义一个不同的变量
Servlet实例由Web容器负责管理,Servlet有生命周期
一个Servlet类,在web容器中只有一个实例(它的装载与初始化在第一次访问到时进行) Servlet的生命周期:
1、Servlet在第一次被访问时,web容器加载Servlet类
并调用init()方法初始化此Servlet
2、每一次访问Servlet时,调用Servlet的service()方法处理请求信息
3、当服务器重启或停止时,调用Servlet类的destroy()方法销毁实例对象
doGet()/doPost()
service() {
String method = request.getMethod(); //返回"get"还是"post"
if(method.equals("get")) {
doGet();
} else {
doPost();
}
}
________________________________________________
public class HelloServlet extends HttpServlet {
protected service() {
///
}
}
在web.xml中配置了此Servlet, url-pattern=/HelloServlet
当第一次在地址栏上输入:
通过类加载器加载这个Servlet,并调用init()方法初始化
任何请求的调用过程:
先调用Servlet接口的public service(), 在此方法中调用了HttpServlet类中的protected service()方法
而在protected service()中,调用了doXXX方法。
一般自己编写的Servlet,只用重写doGet()/goPost()方法即可;也可重写service()方法 Servlet相关概念:
Servlet是运行在服务器端的JAVA代码,Servlet类的对象由web容器管理
即Servlet类的生命周期由web容器管理。一个Servlet类最多只有一个实例。 它是基于多线程,是线程不安全(意味着尽量不要给servlet加上可以修改的属性)
CGI:通用网关接口,一般使用C语言编写,基于多进程。
Servlet的生命周期:
1、在Servlet类第一次被访问时,类加载器加载此类并创建一个Servlet对象及调用init()初始化
2、在每一次访问Servlet对象时,调用Servlet类的service()方法处理请求。 <回调方法callback>
3、在服务器重启或停止时,调用Servlet类的destroy()方法销毁对象。
编写一个Servlet的顺序:
1、编写一个普通的类,继承HttpServlet,并重写其中的protected service();等
2、在web.xml配置一个Servlet.
第三篇:《java web总结》
Java Web 总结
1.JSP运行原理【javaweb项目总结3篇】
(1)用户通过客户端浏览器向服务器发送请求。
(2)JSP文件将JSP引擎编译成Java的class文件,即servlet。
(3)将产生的servlet加载到内存执行。
(4)Servlet的运行结果以HTML(或XML)形式通过web服务器返回客户端的浏览器。
2.web项目设计
(1)公开目录 (2)web_INF目录 (3)Class目录
3.JSP的基本语法
(1)脚本元素:声明、脚本段、表达式。
(2)脚本段:<% %>
(3)声明:<%! %>不会产生任何输出内容→声明全局变量。
(4)表达式:<%= %>
(5)EL表达式:${ }
(6)指令元素:<% @ %>不在客户端可见
(7)page指令、include指令、taglib指令
page指令:language属性、contentType(text/html)、text/plain application/msword、application/x-msexecl、PageEncoding、info、import属性.
include指令:在JSP页面中静态包含一个文件 <@include file=" "%> taglib指令: <%@taglib uri="标记库的uri地址" prefix="前缀名"%> 指令元素翻译阶段执行,动作元素执行阶段被执行。
<jsp:include>用于包含其他文件可以是静态文件,也可以是动态文件。 <jsp:include>„</jsp:include>包含动态文件时
用<jsp:param>传 (建一值)
考点:
4.指令与动作的区别(include)
1.执行时间不同
指令<%@ include file=" "%>是偏译时包含静态文件
动作<jsp:include page=" ">„</jsp:include>是运行时包含的文件
2.引入内容不同
指令<%@include file="relatirveURI"%>引入静态文本(html.jsp)。
动作<jsp:include page="relativeURI" flash="true"/>引入执行页面或severlet的应答文本。
5.JSP内置对象
Out,request,response,session,application,page,pageContext,exception,config
request客户端向服务端发送请求。
response用于服务器端封装JSP处理请求后产生的结果。
response对象的send Redirect(url)方法相当于两次请求。
而<jsp:forward>在网址不变情况下内部跳转不同页面,但依旧属于同一次请求
6.session和cookie的区别
1.存放地点不同
Session存放在服务器端,cookie存放在客户端的硬盘里
2.存活时间
session随用户访问服务器而产生,随客户下线或超时而消失
3.安全性
session存放在服务器端,不能被修改,且随客户端浏览器的关闭而消失,安全性较好。Cookie存放在客户端,安全性较差。
7.数据库
java.sql.Driver
java.sql.DriverManager——加载驱动程序
java.sql.Connetion——表示数据库连接对象,对数据库一切操作都在这个基础上
java.sql.Statement——执行SQL语句和返回结果
java.sql.ResultSet——结果集用来暂时存放数据库查询操作结果【javaweb项目总结3篇】
8.编写程序的步骤
1.装载驱动程序
class.forName("com.mySQL.jdbc.Driver")
2.定义所需连接数据库的地址
String mysqlURL="jdbc.mysql://host:port/dbName"
3.建立与数据库的连接
Connection conn=DriverMannager.get Connection(url,"登录数据库用户名","
密码")
4.声明并执行SQL语句
5.处理返回的结果
6.关闭对象
String driverStr="com.mysql.jdbc.Driver"
String connstr="jdbc:mysql://localhost:3306/book";
Class forName(driver Str)
Connection conn=DriverManager.getConnection(connstr."root"."123") 第4步:建立语句对象
Statement stmt=conn.createStatement()
第5步:声明并执行SQL语句
String sql="select*from book";
ResultSet rs=stmt.executeQuery( sql);
第6步:
Statement接口的3个方法:1、ResultSet executeQuery(String sql)
2、int execute Update(String sql)
3、boolean execute(String sql)
ResultSet的方法:1、boolean next()
2、get xxx()
第7歩:rs.close() stmt.close() con.close()
注:关闭资源的顺序与打开资源顺序恰好相反。
第8步:异常处理
try{.........}catch(SQLExecption ex){.........}
9.Java Bean 组件(可重用)
组件:是一个独立的模块,外界可以不了解内部如何实现,只需通过其提供的接口对组件进行访问即可,组件可重用。
特点:1、实现代码重复使用;2、易编写,易维护,易使用。
10.Java Bean类的编码约定
1、类实现了java.io.Serializable接口
2、必须放在某个Package(包)中
3、类中如果有构造方法,那么这个方法是共有的,并且无参数
4、所有属性都是私有的(private修饰)
5、get XXX:用来获取属性,此方法是共有的
6、set XXX:用来设置属性,此方法是共有的
7、对于boolean类型的成员变量允许使用“is”代替“get”和“set”
8、类中的普通方法不适合上面的命名规则,但这个方法必是public的。
3个标记:
<jsp:useBean>网页中创建JavaBean实例
<jsp:setProperty>用于为bean中的属性赋值
<jsp:getProperty>用于获取bean中属性的值
<jsp:useBean> id=”javaBean实例名” class=”javaBean对应的类名” <jsp:setProperty> 设置<jsp:useBean>的属性
<jsp:getProperty>获取JavaBean实例指令的属性值,并将这个值转换成字符串显示到JSP页面。
11.servlet的生命周期
(1)当客户第一次请求servlet时,servlet被加载到内存 容器会创建servlet实例,并调用其init()方法进行初始化工作。
(2)容器创建请求对象,然后调用servlet的service()方法为客户提供服务。
(3)当servlet不再被需求时,容器调用servlet的destory()方法将servlet实例销毁。
12.Servlet开发
引入import.javax.servlet.* 和import.javax,servlet.http.*包
13.Servlet过滤器
Servlet过滤器是一种java组件,它位于客户端和处理程序之间
Servlet过滤器工作原理
14.Model1和model2
Model1:JSP+JavaBean【javaweb项目总结3篇】
Model2:JSP+Servlet+JavaBean
Model1中,jsp页面实现页面显示、业务逻辑和流程控制,数据处理由JavaBean完成。
优点:进行快速和小规模的应用开发时优势非常明显。
缺点:不利于web应用的扩展和更新;调试和排错困难。
Model2中,MVC模式--->模型-视图-控制器.即把web应用的输入输出和处理流程按照Model.View和Controller分成三层。
Model1和Model2的区别:
Model1和Model2实际上就是对采用JSP技术开发的web应用的不同模型的描述。Model1采用JSP+JavaBean技术开发web应用,它比较适合小规模应用的开发,效率较高,易于实现,但由于在JSP页面中内嵌了大量的Java代码,以至于当业务逻辑复杂时,代码可维护性、可扩展性和可重用性就会下降;Model2采用JSP+Servlet+JavaBean技术开发web应用,该模型基于MVC模式,完全实现了页面显示和逻辑的分离,它充分利用了JSP和Servlet两种技术的优点,JSP更适合前台页面的开发,而Servlet更擅长服务器端程序的编写,Model2分工明确,更适合大型项目的开发和管理。
视图(view)用于与用户交互,可以用HTML.JSP实现。
15.模型(model)用于表示业务数据和实现业务逻辑,可以用JavaBean实现 控制器(controller)完成流程控制,它接收来自视图层用户输入的数据,并调用相应的模型进行处理,最后选择合适的视图去响应用户。控制层可以用Servlet实现。
优点:MVC模式完全实现了页面表示和业务逻辑的分离;
MVC优势之一在于三层各司其职,互不干涉。
缺点:没有明确的定义。
模型层为JavaBean,实现了数据的表示和业务逻辑,视图层为JSP页面,只负责显示功能。
控制器为Servlet,负责接收用户的请求,设置JavaBean属性,调用JavaBean完成业务处理,最后将处理结果交给JSP页面显示。
16.自定义标签
对隐式对象的操作、处理表单、访问数据库及其他企业级服务。
自定义标签种类:
1.不带有属性和标签体:<my prefix:sometag/>
2.带有属性没有标签体的标签:<myfrefix.sometag . myAttribute:"test"/>
3.带有属性带有标签体:<myprefix:someteg myAttribute="test"/> myBody
</myprefix:sometag>
17.EL表达式
基本语法${expr}
功能:对属性对象的简明访问:${user}
对属性对象的属性访问:${customer.firstname}
对属性集合元素的访问:对数组和list:${variable[index]} 对map:${variable[key]}
对请求参数cookie等的简单访问.
请求参数${param.custID}
Cookie对象:${cookie.userCookie}
18."."操作符和"[ ]"操作符
${user.address}=${user[address]}
访问数组和集合元素,需使用[ ]
第四篇:《JAVA-WEB项目开发学习总结》
一期项目总结 经过这最近一段时间的项目开发与考核,今天终于画上圆满的句号,我长呼了一口气,同时在内心深处,也默默地为接下来的学习,做一个前段时间的项目总结,也是学习的总结,吸取之前的经验教训,前事不忘后事之师,错误并不可怕,可怕的是再在同一个地方犯同样错误,所以对于我来说,更多的去自我认知,知我批评要比表扬和赞许来的更加深刻 ,非常有必要做一个总结。 虽然所做的项目并没做到考核老师所希望看到的效果,和得到正面的点评,也与自己所想象的结果大相径庭,当然可能在项目最开始的时候,我也曾做过这样最坏的打算,但是当现实渐渐逼近的时候,我却一时难以接受这样的结果,是我意料之外,但也是情理之中,俗话说:种瓜得瓜,种豆得豆。 在项目开发其中,我有过给自己找借口,有过灰心的时候,也有过急躁,如坐针毡的时候,但是想要作为一个合格优秀的程序员,你不仅不能这样的情绪,而且在真实的开发环境当中,会有遇到比这更艰难的情况,更不好开发环境,所以要完成一个项目的开发,我得要利用好为数不多的学习时间,更加勇敢的直面这些缺点,并且改正它,不要认为自己以前没学过JAVA,没有这方面的经验而去给自己找借口,越过心理上的这一到鸿沟。 考核的胡老师说过:不要总是把自己当成一个学生去看待,这样容易松懈,应该是把自己当做一个职业人去看待,做好当下的每一个效果,上好当下的每一节课,让自己时时刻刻紧张起来。这样类似的话,在我之前的公司,也有主管这样说过,虽然我已大学毕业了,没有完全把自己当一个学生去看待,但自己又何尝不是有过这样的念头,特别是别人都是这样想的时候,学习的态度不够坚定,立场不坚决,这也是导致我没有学好的主要原因之一吧。 工善欲器事,必先利其器。除了保持好的心理和端庄学习的态度外,更要总结更好的学习方法,不要让自己陷入到疲惫学习的死胡同了,积累好的学习经验,去掌握好的学习方法,好的学习方法不仅是自己当下一笔无形的财富,也是在不久的将来,在工作当中竞争的一把利器。 吾日三省吾身,只有在自己的总结中给予自己更多的认知,反思,而少一些褒奖,这样自己会对平时忽视的一些地方,能有更加深刻的理解和认识,实践是检验真理的唯一标准,虽然实践中我们所遇到的挫折与失败会有无数次,而成功只有一次,但是只要成功了,我的付出就是值得的,就像前面有无数个-1,但你只要最总做到了一个+1,
你的结果就是+1的,在别人的眼里你就是成功的,在客户的眼里,你项目是物美价廉的。 回想在这一个多月的学习时间里,我学到了许许多多让我感觉比较充实的知识,掌握了更多的学习的方法,但这都是与大家息息相关的,离不开老师的教导和同学的帮助,也在此非常感谢大家热心帮助。 2012/09/11
第五篇:《JAVA WEB开发基础知识总结》
第六篇:《java项目总结4篇》
总结一:在通过将近一个月的项目中,使我学到咯很多的东西,也让我看到了我自己的一些在知识上不足,也将使我在后面java web的学习中还要更加努力,以便在以后能找到自己适意的工作,也不枉费在朗沃9个多月的学习,在这次项目中让我学到了很多的东西,不只是代码上的知识,也学谍咯java框架上的一些基本东西,还有层次结构的好处和又来,比如:MVC思想,MVC的又来有开始的两层结构到三成结构的过度以及两层结构的优缺点,以及现在流行的三层结构的优缺点,DAO模式的应用,对象的封装,socket通信的原理以及用socket发送对象等很多的知识点,怎样实现封装使得更好的保护数据,实现java的三大特点,使代码的耦合度降低提高内聚力类和类之间的依赖性降低使模块和模块之间的层次分明,实现代码的复用和实现结构的复用使得开发一个系统的性能更加的优异。
在这次项目中使我对java面向对象的认识有了更时刻的印象,对“万物皆为对象岜整个理念有更深层次的理解,通过和老师的交流和上网了解的一些知识,其实搞软件的实质并不使在代码上实现一个什么什么的功能,你只要愿意去着你用你所学的知识肯定能够实现某一个功能,但学软件的最根本使分析和设计,所以现在市面上会设计的人才使最来钱的人,在软件开发的生命周期中编码其实使占很小一部分工作,数据库设计人员和java的框架技术人员使很赚钱的,也只有对在对象上有更多的了解你才能从代码层次上上升为另一种理念过后你才能在以后的编码中设计出更加优异和性能更高的代码,也只有这样那么你将来才有可能成为一个合格的程序员(不时编码高手),在二个项目中的开发中使我团队开发软件上有了了解,也使我了解了在团队开发软件的时候的一些注意点,不能随便更改类名,方法名悻变量及其修饰符,如果你一时兴起该了的话那么在项目融合的时候问题机会层出不穷,就有可能使你的项目失败,所以规范时很重要的,代码的规范将很大层次上的说明你对代码的熟念度。
在这次项目中使我对层次模型有了了解,在你那到一个项目文档的时候你比不使马上就开始编码而是,找到每个层次上类,找到边界类,根据相应的业务设计出数据库原型,在数据库原型出来之后在设计数据库的表和表之间的关系,只有层次模型在你脑海中有深刻的印象的时候那么你的编码当然也就很顺利的实现,层次模型一旦建立那么你代码上实现就围绕这个架构来写,那么你的系统才有可能成功,这样在添加业务或者使更改业务时才很方便更改一个地方不会影响到其他的层次,这样才有可能提高你系统的灵活性和扩展性,这也时衡量一个系统好坏的标准,在这次项目开发中用到咯大量的配置文件比如:用属性文件来建立socket连接,用xml文件在找业务类,这样有使我对配置文件的好处又有了一定的了解:合理的使用配置文件时提高代码灵活性的一个方面,在建立套节字连接的时候用配置文件可以很方便的更改我在那个端口号上建立连接,在看不到源代码的时候我也可以更改在其他端口上建立socket连接,在业务的时候用xml文件来找相应的业务类,这样就可以在还要添加业务的时候只需要在xml文件中在添加业务,在写起相应的代码就可以实现,用配置文件找业务还又一个好处就是在调用业务的时候不用对业务类静态的创建一个对象,而是用反射的方式找到调用那个方法,而是在程序执行的时候在创建对象在对象用完之后在释放资源,这样就可以减少电脑内存的消耗,使得程序的性能更加优异。同时也增强了代码的灵活性。
在用JDBC获去数据库连接对象的时候,其实时很有学文的咯,你如果在用连接对象的时候就要数据库建立连接对象,在用完诸后就关闭连接对象,在很多用户同时来运行你的系统的时候,就将产生很多的连接对象,这样有使得你的系统性能降低,很好的解决办法就是用数据库连接池:在程序启动的时候就建立最大连接和最小连接,当多用户请求的时候只需从数据库连接池中那出连接对象,这样就可以减少多次连接对象,开始在最大连接对象和最小领接对象的选择上又有了问题,创建最大连接时多少呢?最小连接有是多少呢?如果一开始最大连接数过多,而用户有很少那么就浪费资源,并且系统启动将会很慢,如果最大连接数过少那么程序启动很快但在启动后运行程序时有会很慢,最小连接数如果很小,那么在很多客户访问的时候将会很慢,合理利用数据库连接池将会很大部分的提高程序的性能、在这次项目还用到了日志文件来记录错误信息,在这次项目中还用到了很多的知识点我就不一一的在这里列举了。顺便给大家几道面试题(是前面部的同学给我说的):
1、谈谈final、 finally、 finalize的区别。
2、HashMap和Hashtable的区别。
3、说说你对ejb的认识。
4、GC是什么? 为什么要有GC?
5、谈谈你对抽象类与接口认识?
总结二:
项目的框架:
先由通讯服务器(LISServer)开一个8088端口,当接收到客户端发送的内容,然后将 行解析,然后根据解析出的内容作出相应的回应,这些回应是利用jDBC从数据库掉出 在与数据库连接时要用到一个数据库连接池,连接池的作用是用于避免频繁的链接数据 库,这样可以提高对用户的回应效率。
用到的类有:
LISServer:启动服务器并监听8088端口
DispatchSocket:一个多线程的类,负责处理每个客户端的请求
Requset:请求类,负责客户端发送的请求处理
Response:响应类,负责将数据输出到客户端
WebAppConfigManager:一个负责读取web.xml文件的类,同时生产对应的数据对象, 该数据包含在WebApp类型的对象里,单例模式类
WebApp: 对应xml文件里的<WebApp>节点的类
ServletMapping :对应xml文件里的<ServletMapping>节点的类
BusinessServlet :对应xml文件里的<servlet>节点的类
ConfigDataSource :对应xml文件里的<resource>节点的类
Super :业务抽象类
CCB :建设银行业务类
ICBC :工商银行业务类
BaseDao :业务接口类
InterestBean :数据库ccb表格对应的映射类
MyUser :数据库myuser表格对应的映射类
DBUtil :连接数据库操作类
MyUserDao :负责对myuser表格操作的类
CCBDao :CCB业务处理类,负责对数据库数据操作
ICBCDao:ICBC业务处理类,负责对数据库数据操作
LogInfo :日志文件类
用到的技术和资料:1.网络编程应用2.IO流操作应用3.字符串分解应用4.XML解析(JDOM、DOM4J)应用5.JDBC连接数据库和数据库操作应用6.JUnit测试用例应用7.反射技术应用8.工厂模式应用 9.集合应用 10.数据库连接池应用 11.持久层应用 12.多线程应用 13.日志文件应用14.接口、抽象类应用 15.面向接口,面向抽象,面向父类编程应用 16.properties配置文档。
在这个项目里我知道了团队的合作是很重要的一个元素,一个完美的项目是离不开团队的,而团队的分工可以造就一个完美的项目,团队里的每一个成员都是不可缺少的一个部分,我们在做的这个项目时犯了个很大的错误,就是每个成员都是自己搞自己的,只管把自己的搞好就行了,从来没有想过其他组员的完成是怎样的。这是一个很大的失误。相信在以后我们会很好的发挥出团队的优势。还有就是在项目辩答中老师说的很对,我们只知道学习一些书上的那些很浅很浅的知识,在学习中老师只是把学习的方向给我们指出,其他就要靠自己去钻自己去研究。不是什么都靠老师说的。还有就是在答辩中出了很多答辩题,这些题都可以让我们提升的,在这些题里也可以发现我们的不足之处从而弥补它。我们要做到在项目中学习,在总结中学习,在答辩中完善自己。
总结三:
这是一次比较完整的团队合作项目,它要求团队各成员对系统的主体设计搭成一定的共识,这包括数据库设计,需求分析,以及其它一些细节,因此在编码之前的准备工作一定要充分。
在设计之前,我们两组对于数据库的设计进行了激烈的讨论,最后在一些关键的问题上统一了意见。接下来的工作便是需求分析,具体结构设计,并制订小组项目详细计划,项目的进行将严格按照所制订的计划执行。然后小组成员对各自的数据库进行了设计,并且以数据字典的形式进行了共享。
企业级人力资源系统分为十个子系统:机构编制管理、人员信息管理、人事档案管理、考勤管理、薪资福利管理、社会保障管理、招聘管理、合同管理、查询统计管理、系统管理。
我负责人员信息管理子系统,这方面需要处理的业务逻辑比较少,表单比较多,要把握好与其它子系统的关联。员工基本信息表是与其它子系统关联的桥梁,大部分表都涉及到与基本信息表的外键关联。其中,职员编号(employeeId)是作为外键关联的字段,我给它设置了自增长。有人认为在企业里,职员编号应该是有一定规律的数字,而不应该设置自增长。【java项目总结4篇】java项目总结4篇。这样的是想法很符合实际情况,后来我和两个组长讨论,认为自增长可以保证数据的唯一性,非自增长的主键在增加时可能遇到不可知的问题,并且其他组员的数据库已经设计好,改起来就麻烦了。因此最终职员编号采用了自增长。
有了上面的共识,接下来的重要工作便是依次完成表的增删改查、数据校验。其中,分页和批量删除是我计划最后完成的部分,并且一定要完成。
基本数据校验按各数据格式进行,例如手机号、e-mail等。另一方面要对职员编号与姓名的一致性,职员编号的存进行验证,这些通过DAO里面的方法实现,针对出错,用JS给出友好的提示。
在做好基本功能的前提下,争取做出特色。我尝试写了Hibernate分页、批量删除的代码,最后都测试成功。同时加入了JS控件,对于一些有特殊格式要求的字段,防止用户填写错误(比如日期的填写格式为yyyy-mm-dd),使系统更加人性化。经过讨论,对员工基本信息主表及与其关联的所有表,配置级联删除。当主表信息被删除时,与之外键关联的子表信息同时被删除。
回顾这段历程,遇到了一些瓶颈,例如批量删除时如何有效的处理选中的id,要明白它得到的是一个String[],需要转化成int[]就好办了。关于分页,我也是琢磨了好久。在网上看了不少实例,具体实现起来还是一头雾水。就在项目验收的前两天晚上,我决定自己写的试试。第一个方法是需要获取表里面总记录数count,按照套路执行hql,我这样处理了结果:
count = list.size();结果出了问题。数据库里有6条记录,结果打印出count为1。在这里折腾了好久,后来打印list为[6],这下才明白list.size()得到的是list里元素的个数,这个元素是6 ,我需要获取的是元素的是值(基础知识薄弱)。明白这点就好办了,最后我是这样处理的
String a = list.get(0).toString(); //获取list第一个元素(对象),并转换成String
count = Integer.parseInt(a); //将a转换成int,得到count 这样做分页的第一步就完成了。第二天早上比较顺利的完成了剩下的代码并测试成功。 相比网上的分页代码,总的来说我写的很容易看懂,至于它有什么问题目前还不知道。
通过这次项目经验,我明白了只要想到了,就一定可以做到。不要畏惧,困难并不像想像中的那么可怕。一味的逃避将得不到真正的锻炼。要时刻和队友交流,分享成果。两个人总比一个人知道的多。【java项目总结4篇】文章java项目总结4篇出自
第七篇:《java实训总结3篇》
总结一:
1、传统的错误观念
以前以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,问题在那?如何定位?如何解决?通通跟一样能力有关,debug追踪能力,也称调试.在项目组工作不愁源码资源,但问题是蛋糕摆在面前,你如何去消化?
有位同事告诉我:代码看几遍都没用,要去抄,例如一个查询模块,在此基础上去做具体记录的历史记录查询模块,你可能会觉得很简单,但实际情况却往往报一堆异常,配置问题涉及到方方面面,以及数据库字段,传值问题等等,一大堆对于新人来说很郁闷的问题.但不用怕,只要学会调试,一个个问题去追踪,一个个去解决,自然而然,那段“源码”才真正属于你.
2、如何调试追踪?
如果你能在短短的时间内就看到问题点在那,放下断点去追踪,出去找工作,绝对没问题.出现问题的时候,不要光看代码,要用实际行动去追踪运行期间的具体值,那是最好途径.eclipse是个很爽的idea,这点做的很好.例如页面内容显示不是自己想要的数据,我们要先从数据库查询语句去下手,设置断点,一步一步step over,让sql字段(存取最终sql语句的字符串)运行到有值,inspect进去看,如果还看不出来,就点击它,copy后在sql客户端去实际运行,看看实际查询出来的表是什么,如果是对的,有可能就是页面调用的错误或者action逻辑的传值问题.
页面错误的调试,基本方法是用右键点击实际网页查看源代码,copy到editplus,就能看到具体错误发生在那几行.通常有几种常见的错误,.例如.缺少对象 这种很多时候是有些被你调用的字段有可能为空的情况出现的,可以加if(xxx=null)语句加保护.追踪的方法基本就是用alert语句,放在有可能出错的地方.毕业实习总结
3、一些习惯
遇到问题先自己思考,无从下手再找高手帮忙看看,注意他帮你看的思路,别在一旁闲着,看多了自己也会了,不然你一辈子都停留在那种水平,从人身上学到的东西远远比书多的多.
解决了一个问题后,要去究根问底去找到问题产生的起因,以防你下次遇到类似的问题再浪费同样的时间.
把代码写的漂亮,注释,空行,规范一样不能少,可读性是放在第一位.曾经看过一个高手写的代码,真的一看就是不同水平的人写的,几乎很完美,读起来很流畅,方便自己也方便别人.
任务完后不要呆着,去要求经理给你更有挑战性的任务,只要你肯去尝试,他们就会对你另言相看,把三天的任务一天加班搞定,效率和忠诚都有了,路也比较好走了.
4、题尾话
如果你有一份思想,我有一份思想,拿出来交换,我们大家拥有就是2分份思想,可惜这种观念,并不能深入每一个团队的每一个人,少一点自私,未必不是好事.职场到处都存在被排挤的隐患,要为自己找片草地实在不容易.但有一点要相信,只要自己不放弃自己,这世上就没有绝望的路,你可以被打趴下,可以被身边的人暗算,可以被深爱的人流放,只要你用自己决心站起来,受过的伤痊愈后就能增强你的抵抗力,一路前进!
总结二:
这一期的实习,虽然实习的时间不长,但是总体上收获挺大的,学习中我不但有了学习成果的喜悦,而且自己也日渐成熟,有种说不出的喜悦。以下是我在这次实习中的一些感悟和体会:
1.通过过这次实习,我们不仅在编程的理论知识上有所巩固和深化,更重要的是有了实战进行项目开发锻炼动手能力的机会,积累了一笔宝贵的经验。我学会了如何团队合作,共同开发。独木难支,光靠一个人的力量是远远不够的。只有管理组织好一个团队,才能够最终完成项目的开发,或许在编程技术水平上团队成员有高有低,但是,每个人都有自己的闪光点,总可以在团队的找到适合自己的位置,每个人在自己的团队中做的贡献,创造出不可磨灭的重大价值。
2.有些知识点以前没有学过,但我也没有去研究,实习时突然间觉得自己真的有点无知,虽然现在去看依然可以解决问题,但要浪费许多时间,这一点是我必须在以后的学习中加以改进的地方,同时也要督促自己在学习的过程中不断的完善自我。
另外一点,也是在实习中必不可少的部分,就是同学之间的互相帮助。
3.我学会了如何理解和分析客户的需求。软件为客户而生,只有理解了客户的需求才有写出优秀的软件的可能,在这次实战演练中,老师教会了我们如何组织团队正确的理解和分析客户的需求,并写出完善的需求分析,并用于项目开发。
4.我学会了对按照需求对软件架构进行设计,这点我想是我们许多同学之前都非常欠缺的,因为我们在学校的 本文来自高考资源网
此次实习,我深深体会到了积累知识的重要性。在实习当中我们遇到了不少难题,但是经过我们大家的讨论和老师细心的一一指导,问题得到了解决。 实习结束了,收获颇丰,同时也更深刻的认识到要做一个合格的程序员并非我以前想像的那么容易,最重要的还是细致严谨。社会是不会要一个一无是处的人的,所以我们要更多更快地从一个学生向工作者转变,总的来说我对这次实习还是比较满意的,它使我学到了很多东西,为我以后的学习做了引导,点明了方向,我相信在不远的未来定会有属于我们自己的一片美好天空!
实习即将结束了,我非常怀念这次校内实习,在实习的这短短时间里,我每一天过的都很踏实的,充实的;我相信,只要我秉持艰苦奋斗,为理想拼搏的精神,尽管在未来的java路上荆棘丛丛,我一定可以披荆斩刺,度过重重难关,实现自己未来的理想!
在这里,我非常感谢实习的指导老师,在老师的帮助和指导下,我克服了Java学习上的一道道难关,课上认真听讲,摘好必要的笔记,并通过自己课后的不断消化学习,现在自己已经基本掌握了java的基础知识,并且能独立的开发出系统。实习是为将来打基础的重要阶段,珍惜自己每一个工作的机会,不论什么人,什么学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。
“纸上得来终觉浅,绝知此事要躬行!”在短暂的实习过程中,让我深深的感觉到自己在实际运用
中的专业知识的匮乏,刚开始的一段时间里,对一些工作感到无从下手,茫然不知所措,这让我感到十分的难过。在学校总以为自己学的不错,一旦接触到实际,才发现自己知道的是多么少,这时才真正领悟到“学无止境”的含义。“千里之行,始于足下”,这是一个短暂而又充实的实习,我认为对我走向社会起到了一个桥梁的作用,过渡的作用,是人生的一段重要的经历,也是一个重要步骤,对将来走上工作岗位也有着很大帮助。【java实训总结3篇】文章java实训总结3篇出自http:// 推荐访问: