标签:
这是自己自学Java的笔记,可以从后面开始看,后面有具体代码教程,jdbc连接数据库,spring的2中连接数据库方式,以及Hibernate 连接数据库方式
,关于SSH三大框架的整合,正在一步一步的更新,做好之后所有的图文教程会更新上来。
csdn上面的都是没有图片的,请去下载带图片的教程,傻瓜式开发,各种图文介绍
目录12 SSH实战进阶前面的都是我自学的一些理论讲解可看不可看,重点为12 SSH实战进阶 傻瓜式图片教程连接数据库操作等,目前只写到Spring和Hibernate后面会整合Struts进来
DOC附带图片介绍的DOC下载地址,里面图片实在太多了,拉过来很麻烦
http://download.csdn.net/detail/qq873113580/8728589
目录概要
主要是用来在一个页面中使用其他页面,类似ifram的用法,HTML页面中ifram用法
<ifram src=”a.html”/>
Java中可以使用ifram也可以使用include
语法:<%@ include file="a.jsp"%>
需要注意所引用的页面,如a.jsp里面不能有其他代码
语法:<%=表达式%>
输出
语法:<% java代码 %> 也就是net cs类里面写的东西,可以集合表达式用,例如
语法:<%! Java方法%>
<!—这里客户端能看到à 缺点:不安全,加大网络传输负担
<%--这里客户端不能看到--%>
<% //单行注释 %>
<% /*多行注释*/ %>
输出对象,常用方法out.print() out.println() out.write()
输出内容到网页,三个方法都一样,不受方法名的影响,比如println是输出换行的意思,但是这里是输出在网页,知会根据输出内容处理在html页面处理
常用方法很多,具体列举3个
<%--赋值 --%>
<%session.setAttribute("userName","张三");%>
<%--取值值 --%>
<%=session.getAttribute("userName")%>
<%--删值 --%>
<%session.removeAttribute("userName");%>
请求方式:<%=request.getMethod()%><br>
请求的资源:<%=request.getRequestURI()%><br>
请求用的协议:<%=request.getProtocol()%><br>
请求的文件名:<%=request.getServletPath()%><br>
请求的服务器的IP:<%=request.getServerName()%><br>
请求服务器的端口:<%=request.getServerPort()%><br>
客户端IP地址:<%=request.getRemoteAddr()%><br>
客户端主机名:<%=request.getRemoteHost()%><br>
表单提交来的值:<%=request.getParameter("name")%><br>
表单的多个值:<%=request.getParameterValues ("name")%><br>
设置编码:<%=request.request.setCharacterEncoding(“utf-8”)%><br>
转发
request.getRequestDispatcher("a.jsp").forward(request,response);
页面转发效率高,同时request中的对象还可以在下一页面使用
重新定向客户端的请求
<% response.sendRedirect(“a.jsp”)%>
页面转向时request和response的信息都丢失了,它是重新发起一个定向请求,和原先的没有关系了.由于它是新的定向请求,所以效率不高。页面转向可以用在同一个应用中,也可以用在不同应用中。也就是说redirect可以转到外部系统。
转发
request.getRequestDispatcher("a.jsp").forward(request,response);
页面转发效率高,同时request中的对象还可以在下一页面使用
也就是在jsp页面调用后台类
Alt+Shift+S+F
常用4中内置对象,取值范围从小到大pageScope<requestScope<sessionScopr<applicationScope
使用例子
对象访问方式
首先引用
<%@ tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
创建servlet文件,系统会自动生成,然后在web.xml里面找到url访问路径
还需要注意一点的是字符串比较,尽量用equel方法==符号不一定适用,java里面字符串对比的是地址,值类型才用==
Struts是web框架用于操作(jsp,Action,actionForm)
Hibernate是orm,处于持久层
Spring是容器框架,用于配置bean,维护bean之间的关系
Spring中有一个非常概念bean(是java中任何一种对象,可以是server,action,数据源,dao)
重要概念
IOC(控制反转) DI(依赖注入)
画一个层次图理解spring处于什么位置
最好下载第二个压缩包
创建一个源文件夹,用来存放测试程序生成的代码
右键src,选择new找到soruce floder
选择需要测试类,右键,new 选择Junit test case
运行单元测试
系统自动引用Spring包
在工具栏Myeclipse->Project Facets[Capabilities]->Install Sprint Facets
回顾上个例子中,需要吧Hello方法做成一个接口方法,分别被English类和Chinese类,实现,做成一个英文版和中文版的欢迎
上面使用接口做成了一个类似语言包的配置模式,一个Hello接口里面定义一个SayHello方法,分别被English和Chinese类实现,也就是中文版和英文版的区别,然后在applicationContent.xml里面配置一个 <bean id=’hello’, class=’xxxxx.Chinse’>
在程使用BeanFactory factory=newClassPathXmlApplicationContext(“app…xml”);
返回一个接口
Helloh=(Hello)factory.getBean(“hello”);
后面只需要修改配置文件中的class地址,就能指定调用哪个语言版本,而不用修改源程序
也就是父类和子类的关系,父依赖于子
运行期的动态注入,在运行期读取配置文件,自动生成具有依赖关系的对象
就是类似NET的BLL里面调用dal的方法
例如
Public class UserBLL{
PrivteUserDal dal=new UserDal();
Public string GetName()
{
Return dal.GetName();
}
}
这个BLL在Java里面就叫做设值注入方式
下面是java的例子
层与层用new 导致的问题,而不是用接口,跟上面例子中英文配置类似,做好接口和dal层之后,可以根据配置去调用不同数据库的读取方式,而不用修改程序,也就是jdbc要还hibernate或者其他方式实现等
.
这样配置好,dal里面就写任何的事物管理代码了
面向切面编程
r
控制Struts样式
package com.db;
import java.sql.DriverManager;
publicclass DBHelper {
//数据连接地址,格式jdbc:mysql://{数据库地址,127.0.0.1,localhost,等等}/{数据库名称}
publicstaticfinal Stringurl = "jdbc:mysql://127.0.0.1/test?characterEncoding=utf-8";
//驱动名称,一般都是根据不同的驱动包而选择的固定命名
publicstaticfinal Stringname = "com.mysql.jdbc.Driver";
//数据库用户
publicstaticfinal Stringuser = "root";
//数据库密码
publicstaticfinal Stringpassword = "123456";
publicjava.sql.Connectionconn = null;
publicjava.sql.PreparedStatementpst = null;
publicDBHelper(String sql) {
try {
Class.forName(name);//指定连接类型
conn =DriverManager.getConnection(url,user, password);//获取连接
pst =conn.prepareStatement(sql);//返回执行SQl语句的对象
} catch(Exception e) {
e.printStackTrace();
}
}
publicvoidclose() {
try {
this.conn.close();
this.pst.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
package com.main;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.db.DBHelper;
publicclass ProjectMain {
publicstaticvoidmain(String[] args) {
String sql = "select *from User";//SQL语句
DBHelper db = newDBHelper(sql);//创建DBHelper对象
try {
//执行语句,得到结果集
ResultSet ret =db.pst.executeQuery();
System.out.println("ID \t名字 \t密码");
while (ret.next()) {
String id =ret.getString(1);
String name =ret.getString(2);
String pwd =ret.getString(3);
System.out.println(id+"\t" + name + "\t" + pwd);
}
ret.close();
db.close();//关闭连接
} catch(SQLException e) {
e.printStackTrace();
}
}
}
<beanid="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<propertyname="url">
<value>jdbc:mysql://127.0.0.1/test</value>
</property>
<propertyname="username">
<value>root</value>
</property>
<propertyname="password">
<value>123456</value>
</property>
</bean>
<beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate">
<propertyname="dataSource">
<reflocal="dataSource"/>
</property>
</bean>
applicationContext.xml配置文件在Spring中是一个大容器,用来定义一个类规则。上面4,5两章教程里面,转换成Net代码,如下:
package com.sptingjdbc.dao;
import java.sql.ResultSet;
importjava.sql.SQLClientInfoException;
import java.sql.SQLException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import com.sptingjdbc.model.User;
publicclass UserDao {
privateJdbcTemplatejdbcTemplate;
publicvoidsetJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate =jdbcTemplate;
}
public UsergetUser() {
String sql = "select * from user whereid=‘230d9957-ffa0-11e4-9541-b888e3f6853d‘";
User u = (User) jdbcTemplate.queryForObject(sql,newRowMapper() {
publicObjectmapRow(ResultSet rs, int rowNum)throws SQLException {
User us =newUser();
us.setId(rs.getString("ID"));
us.setName(rs.getString("Name"));
us.setPassword(rs.getString("Password"));
return us;
}
});
return u;
}
}
<beanid="userDao"class="com.sptingjdbc.dao.UserDao">
<propertyname="jdbcTemplate">
<reflocal="jdbcTemplate"/>
</property>
</bean>
BeanFactory factory= new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao =(UserDao)factory.getBean("userDao");
User us= userDao.getUser();
System.out.println(us.getId());
System.out.println(us.getName());
System.out.println(us.getPassword());
JdbcDaoSupprot类包含了JdbcTemplate模版
通过继承JdbcDaoSupport类
然后通过this.getJdbcTemplate()获取jdbcTemplate模板对象
package com.sptingjdbc.dao;
import java.sql.ResultSet;
import java.sql.SQLClientInfoException;
import java.sql.SQLException;
import org.springframework.jdbc.core.JdbcTemplate;
importorg.springframework.jdbc.core.RowMapper;
importorg.springframework.jdbc.core.support.JdbcDaoSupport;
import com.sptingjdbc.model.User;
public class UserDao extends JdbcDaoSupport{
publicUser getUser() {
Stringsql = "select * from user whereid=‘230d9957-ffa0-11e4-9541-b888e3f6853d‘";
Useru = (User) this.getJdbcTemplate().queryForObject(sql, new RowMapper() {
publicObject mapRow(ResultSet rs, int rowNum) throws SQLException {
Userus = new User();
us.setId(rs.getString("ID"));
us.setName(rs.getString("Name"));
us.setPassword(rs.getString("Password"));
returnus;
}
});
returnu;
}
}
由于JdbcDaoSupport类中自带DriverManagerDataSource的对象属性,且属性名叫dataSource,而UserDao继承了JdbcDaoSupport,那么UserDao也就自动有了父类的dataSource属性,所以配置的时候直接把dataSource直接给UserDao就行了
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<propertyname="url"><value>jdbc:mysql://127.0.0.1/test</value></property>
<propertyname="username"><value>root</value></property>
<propertyname="password"><value>123456</value></property>
</bean>
<beanid="userDao"class="com.sptingjdbc.dao.UserDao">
<propertyname="dataSource">
<reflocal="dataSource"/>
</property>
</bean>
</beans>
<!-- JDBC数据库配置 -->
<propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
<propertyname="connection.url">jdbc:mysql://127.0.0.1/test</property>
<propertyname="connection.username">root</property>
<propertyname="connection.password">123456</property>
标签:
原文地址:http://blog.csdn.net/qq873113580/article/details/45918565