你好,谢谢你能来我的blog看这篇文章,前段时间一直想写写自己这一年的学习感受及一些需要提醒的问题,可以由于没有时间一直拖到了现在。我以过来人的身份向大家说说我学Java Web的一些感受:
首先最重要的一点我深有体会,那就是当你知道了这门技术的重要的时候不要犹豫,认真去学就是了;像我刚开始学struts框架的时候感觉struts一定很难就没有去学它,到了后来真正要用struts的时候只用了一周就搞定了,所有一定不要怕一门技术,再难的技术也难不过人的大脑。干这行就得这样,每天都有新的东西出来,你每天就得去学如果不学你就是被淘汰的目标……
Java Web技术现在是用广泛到什么程序相信这一点我不说大家也应该明白,Java这种技术一般应用在大中型企业较多,小型企业相对比较少。
学习Java Web技术首先要分清J2SE和J2EE的区别,因为有好多人学了很长时间还不知道什么是J2EE。J2SE就是Java的标准,后面的J2ME和J2EE都是以这个标准来制定的,J2SE就是描述了整个JAVA标准:语法,对象如何初始化、消毁,J2SE 里包含了SUN公司的标准API(Application Program Interface),里面有很常用的类。J2EE是对应于企业级的开发应用,包括:Servlet、Jsp、JDBC、JNDI、SOA、JAXP、JSTL、JMS、EJB以及事务管理机制和安全性,J2EE不像J2SE里提供了SUN公司写好的一些类而是只制定了标准(也就是一些接口或抽象类)让我们来实现,有些开源组织已经实现了很多接口,我们在写程序的时候就可以借助第三方来编程了,达到了面向接口编程的目的。为什么要面向接口编程呢?面向接口编程可以使屏蔽实现细节机时只注重方法的调用,这样当第三方修改的时候我们的代码不用修改就可以使用他们的新功能了,再强调一下J2EE里的都是接口。
下面简单介绍一下这些基础课程:
1、Core Java
何为Core?不用多说了这太重要了,首先我认为比较重要的是,你给别人说你会用Java写程序就必须会用集合(Collection或Map,具体区别这里就不多说了),J2SE包含:基本语法、类、继承、方法、接口、Java面向对象程序设计、Java用户界面(GUI)、
2、JDBC
太重要了,说白了也就是CRUD,CRUD的是增加、读取、更新和删除几个单词的首字母简写,即Create,Read,Update,Delete四个单词的缩写。是数据库操作的基本功,往往是程序员的入门级课程之一。
利用JDBC可以以最原始的方式对任何数据库进行CRUD操作,不过很麻烦,所以现在有了些工具包装了JDBC,可以很方便的操作数据库(如:Hibernate、Ibatis),使用工具可以使程序员只注重业务逻辑的实现而不用去管烦琐的CRUD操作。
其实现在想想做过的一些项目也就是做的CRUD操作罢了,最重要的是你对业务逻辑的理解。
下面是用JDBC访问数据库的六步:
//1 注册驱动到DriverManager
Class.forName("com.mysql.jdbc.Driver");
//2 获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql:///mytest",'root','1234');
//3 获得statement
Statement stmt = conn.createStaement();
//4 执行sql语句 获得ResultSet
String sql = "select * from customers";
ResultSet rs = stmt.execute(sql);
//5 处理rs结果集
while(rs.next())...{
Customer c = new Customer();
c.setName(rs.getString("name));
}
//6 关闭连接
rs.close();
stmt.close();
conn.close();
} catch (Exception e) ... {
e.printStackTrace();
}
3、XML
怎么看都重要,嘿嘿。XML也是像HTML那样由W 3C 组织制定,HTML描述的是如何显示数据的语言,而XML文件是描述数据的结构的性,使你很容易的组织数据的结构,现在也有用XML开发的数据库。不过不要担心XML不难学,况且在开发的时候只要你能看懂XML配置文件就OK了,那些看的脑子大的DTD或schema不用你写,都是由一些组强制定的;现在的所有框架都是用的XML来配置的。
当然不能只会用XML文件,还要会把XML文件中表示的数据解析出来,这个功能SUN的API里已经提供了,现在用的解析方式有:DOM和SAX两种方式。
4、Servlet
JAVA Web技术里的最核心内容,用户从网页里的所有请求都会经过它,也是最繁忙的一个。学习Servlet你应该知道Servlet的工作原理和生命周期,可以把Servlet理解成一个请求拦截器(不只是HTTP请求);应该知道Servlet在什么时候初始化,什么时候消毁,Servlet是怎么拦截请求的,又是如何处理请求的,知道也这些你的Servlet就过关了。
例子:
public class LoginServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = -3828341471846316969L;
@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
doPost(arg0, arg1);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String loginName = request.getParameter("loginName");
String password = request.getParameter("password");
if(loginName == null || password == null) {
response.sendRedirect(request.getContextPath() + "/login.jsp");
} else {
User user = UserDAO.findByLoginName(loginName);
if(user == null) {
response.sendRedirect(request.getContextPath() + "/error.jsp");
} else if(user.getPassword().equals(password)){
response.sendRedirect(request.getContextPath() + "/success.jsp");
}
}
}
@Override
public void destroy() {
/*
* 在消毁该Servlet的时候容器会调用此方法,比如关闭数据库连接
*/
}
@Override
public void init() throws ServletException {
/*
* 在调用doPost()之前做的一些初始化工作
*/
}
}
5、JSP
JSP->Java Server Page,一个Servlet的变种,因为JSP最终会被J2EE服务器翻译成一个Servlet来处理,因为用Servlet来生成动态页面的话太麻烦而且又不美观,后来SUN就和其他组织一起制定了JSP规范,这种规范可以让你在HTML页面中嵌入JSP代码,在访问JSP页面的时候J2EE服务器会把JSP页面编译成Servlet来处理;这样写出来的JSP页面也会和HTML一样美观了,不错吧。
例子:
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>login.jsp</title>
</head>
<body>
<form action="<%=request.getContextPath() %>/login" method="post">
<table border="0">
<tr>
<td>Login:</td>
<td><html:text property="login" /></td>
</tr>
<tr>
<td>Password:</td>
<td><html:password property="password" /></td>
</tr>
<tr>
<td colspan="2" align="center"><html:submit /></td>
</tr>
</table>
</form>
</body>
</html:html>
6、JNDI
JNDI的全称:Java Naming and Directory Interface
JNDI是Java平台的一个标准扩展,提供一组接口、类和关于命名空间的概念。如同其它很多JAVA技术一样,JNDI也给暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA、RMI、DNS以及Windows注册表等等。很多J2EE技术包括EJB都依靠JNDI来组织和定位实体。
JNDI是通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件,在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。
JNDI中的一组绑定人微言轻上下文来引用,每个上下文暴露一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象,每个上下文都提供了绑定和解除绑定的操作。
JNDI的用途:
举一个最常用 的例子,通过JNDI获得一个连接池对象:
//获得上下文的初始化对象
Context initCtx = new InitialContext();
//通过对象在服务器里查找名为jdbc/mysql的对象
DataSource ds = (DataSource)initCtx.lookup("jdbc/mysql");
conn = ds.getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from user";
ResultSet set = stmt.executeQuery(sql);
while(set.next()) {
//
}
set.close();
stmt.close();
conn.close();
7、EJB
除非在大型企业会用它,Enterprise JavaBean,足由SUN公司提出的一种基于组件模型的分布式对象标准构架,EJB组件基于EJB标准构架的部件和对象,通常也称为企业 Java Bean。
使用EJB最主要目的是实现远程调用,说白了就是我可以在我的机器上调用你机器上的一个方法,普通的JavaBean是实现不了的,如果具体说EJB的话那就太多了,这里只做一下简单的介绍。
现在做Java Web开发有一种很流行的模式,就是利用框架:struts+hibernate+spring
由于时间关系今天就先写到这里,有什么问题大家再提,我写这篇文章也只是把所学的东西总体概括一下,不会像书里讲那么多,告诉初学者应该学哪些东西,后面还会再继续添加框架的介绍,敬请期待……