关于框架整合,要看看你整合的框架版本了!有两中SSH的整合:
创新互联公司为客户提供专业的成都网站制作、网站建设、外贸网站建设、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站开发等网站方面业务。
1、struts1.1+Spring1.2+Hibernate3.1
2、struts2+Spring2.1+Hibernate3.1
关于这两种框架整合方式不一样! 至于您所说的jstl标签为感觉没必要导进去!因为框架中所自带的标签已足够使用而且比jstl的好用的多,简洁的多!并且里面还支持EL表达式!
关于具体的整合方式要看看你是哪个配置方案了!
现在只给你说第一种吧:
导jar包时部分jar包会发生冲突,建议你先导struts,在导spring,这是会发生相应的jar包冲突,你只需要保存原有的即可(即:不覆盖),在导hibernate,jar包发生冲突时也不覆盖!总之就是jar包发生冲突时,保存struts中的,spring中的!
至于配置文件的配置:struts与spring配置有3种方式,spring与hibernate配置有两种!
在这里小编使用的是SQLyogEnt进行远程连接配置了SSH的数据库。通过桌面的SQLyogEnt运行数据库客户端。
在界面中点击【新建】按钮,在Mysql下填写Mysql数据库的ip地址、用户名、密码、端口(默认在3306)就好,数据库名称。这里跟普通的连接数据库的方法一致。
这个时候读者可以点击一下【测试连接】,这个时候点击测试连接去连接数据库是不会成功的,因为数据库配置了SSH访问。如下图:
配置完成Mysql信息后,在旁边选择【SSH】
点击SSH后会弹出一个提示框,点击提示框的【确定】按钮。
点击后勾选“使用SSH隧道”
勾选后下方的配置信息由勾选前的灰色变更为白色可输入状态,在这里配置访问的SSH主机地址、用户名、密码或者公共密匙。
配置完成后来测试配置连接是否正确,点击【测试连接】由于已经配置了正确的SSH访问,这次测试连接成功了。
9
最后就可以点击界面下方的【连接】按钮,连接上数据库,进行操作了。
ssh 现三层架构,和每层使用的技术如下:
1.Struts应用在表示层,它是基于MVC的WEB应用框架。
Strutts提供了中央控制器(ActionServlet)和应用控制器(Action)。ActionServlet是Struts框架的核心,采用的是前端控制模式;Action则负责完成对服务的调用,对ActionServlet接受并分发下来请求进行处理。可以重写ActionServlet,也可以直接使用,然后继承Action,使其完成我们要求的功能。有了Struts提供的控制器,再运用JSTL标签、Struts标签库中的标签配以JSP或HTML文件,就是Struts中的视图。另外,用于视图与控制器之间表单数据传输的ActionFormBean,也被归于到了视图中。Struts并没有定义模型层的具体实现。一般情况下,Action中所使用的服务是由业务层提供的。Struts中还有不可缺少的配置文件。该配置文件描述了用户请求路径和Action映射关系的信息。ActionServlet通过解析此配置文件得知需把用户的请求发往哪一个Action。
2.Hibernate是一种映射的工具,完全着眼于关系数据库的对象——关系映射,管理对象到数据库的映射,提供数据查询和获取数据的方法。在持久层中,不仅可以使用Hibernate进行映射,还可以使用iBATIS进行SQL语句与对象之间的映射,此外,也可以直接使用JDBC对数据库进行操作。至于使用那一种工具实现持久化,可以根据自己的需求视情况而定。而Hibernate映射是否复杂取决于领域对象的关系是否复杂。
3.Spring贯穿于WEB应用中,它为我们管理对象提供了方便,降低了层与层之间的耦合度,将程序员从繁琐的事务、安全和分布式处理中解放出来,从而把更多的精力放在业务上。如果应用程序才用了Struts+Hibernate的架构,Spring可以帮助整合两者。在创建对象时,可以通过Spring进行注入;对于事务管理,可以通过Spring集成声明式事务管理到到应用程序中等。
SSH使用存储过程实际上就是Hibernate使用存储过程,跟spring结合后,就是getHibernateTemplate(),主要用下面的方法:
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Transaction trans = session.beginTransaction();
try {
CallableStatement cstmt = session.connection().prepareCall(“定义的存储过程”);
trans.commit();
} catch (RuntimeException e) {
trans.rollback();
}
});
防止SQL注入不仅仅是写代码。主要是有几个方面要注意:第一,页面级的输入验证第二,编码的习惯,最恶劣的就是拼接SQL语句第三,用一些比较成熟的ORM模型都能防止注入第四,可以做URL重写。
SELECT * FROM FITTINGBATCHDETAIL
WHERE SN NOT IN(
SELECT SN FROM ASSEMBLEPRODUCTDETAIL UNION
SELECT
SN
FROM
ASSEMBLEPRODUCT
)
and sn like '%字符串%' --你就是这个地方错了
其中字符串那几个,就是要模糊查询的字符