struts2+hibernate3+ibatis整合 mobile项目

Struts2 ( struts-2.3.4 )常用的jar包,和项目结构,一般jsp文件放在web-inf下面,通过action来调用jsp,防止用户直接输入jsp文件名

Web.xml添加:

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

</filter>

<filter-mapping>

     <filter-name>struts2</filter-name>

     <url-pattern>*.do</url-pattern>

</filter-mapping>

Struts.xml添加到src/config里,放在web-inf/classes/下面

 

package包名的规范:com.microsoft….  net.beifeng……

com公司,net网络公司 + 项目名(如有子系统再加名称) + 模块 + 包的业务,如:net.befeng.mobile_scm.test.action

Struts.xml配置:

<constant name="struts.action.extension" value="do" />//后缀为do结尾

<constant name="struts.devMode" value="false" />        //是否为开发模式

<package name="default" namespace="/" extends="struts-default">

    <action name="welcome">

        <result>/WEB-INF/jsp/MyJsp.jsp</result>        

    </action>

    <action name="showname" class="net.sun.mobile_scm.test.action.TestAction">

        <result name="ret">/WEB-INF/jsp/index2.jsp</result>

    </action>

</package>

namespace=”/”,代表包package的位置,如namespace=”/vendor”:http://localhost:9999/mobile/vendor/xxx.do

Spring整合:myEclipse里有spring类库

加载applicationContext.xml文件,在main()中:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“applicationContext.xml”);

applicationContext.getBean(“….”);得到某对象实例

在spring3包里有个spring.jar包加到项目中

默认applicationContext.xml放在WEB-INF

如果要放在WEB-INF/classes下面要自定义设置,多个文件用分开

 

在 Web项目中启动spring,有2种方法

1、   在web.xml用listener配置

<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>/WEB-INF/classes/applicationContext.xml,...xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

 

2、用servlet 配置

<servlet>

<servlet-name>spring</servlet-name>

<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>

<init-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

</init-param>

<load-on-startup>0</load-on-startup>

</servlet>

 

 

Struts2和spring整合:将struts2-spring-plugin-2.1.6.jar放到Lib中

第1种整合方式:action写在struts.xml里,注入写在applicationContext.xml里。缺点:有多少个action就要写多少个<action>…</action>

<bean id="testAction" class="net.sun.mobile_scm.test.action.TestAction">

    <property name="testService" ref="testService" />

</bean>

<bean id="testService" class="net.sun.mobile_scm.text.service.TestServiceImpl" />

 

 

第2种方式:在applicationContext里只要写bean的实现类(TestServiceImp),不要写action类里ref=”testService”,但是action里的属性名和bean id名一定要一致。spring容器自动会加载。

<bean id="testService" class="net.sun.mobile_scm.text.service.TestServiceImpl" autowire=”byName”/>

autowire=”byName”按名称自动装配

 

Ibatis结构及配置:

Classes下面加入SqlMapConfig.xml,对应类的sql xml文件,加入ibatis-2.3.4.jar文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"

"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

      <transactionManager type="JDBC" commitRequired="false">       //JDBC设置

           <dataSource type="SIMPLE">

                 <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />

                 <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/mobile" />

                 <property name="JDBC.Username" value="root" />

                 <property name="JDBC.Password" value="root" />

           </dataSource>

      </transactionManager>

      <sqlMap resource="config/emp.xml"/>          //其它xml文件,大多是sql语句

</sqlMapConfig>

Emp.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>

           <select id="findEmp" resultClass="test.Emp">

                      select empName,tel,remark from basic_emp where empId=#value#

           </select>

</sqlMap>

main()中测试:

//得到class路径

String appPath = IBatisTest.class.getClassLoader().getResource("").getPath();

String file = appPath + "config/SqlMapConfig.xml";

SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(new FileInputStream(file));

Emp emp = (Emp)client.queryForObject("findEmp","007BFC8C0C754C65B1CDF8FB4E8A21F0");

System.out.println(emp.getEmpName());

Spring数据源配置(DBCP):commons-dbcp.jar和commons-pool-1.3.jar  2个包

在applicationContext.xml中设置:

在表头添加:xmlns:context="http://www.springframework.org/schema/context"

<!-- jdbc.properties配置文件设置 -->

<context:property-placeholder location="WEB-INF/classes/jdbc.properties" />   //在src/config里添加jdbc.properties

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

      <property name="driverClassName" value="${driverName}" />

      <property name="url" value="${url}" />

      <property name="username" value="${username}" />

      <property name="password" value="${password}" />

</bean>

jdbc.properties里设置:

driverName=com.mysql.jdbc.Driver

url=jdbc\:mysql\://localhost\:3306/mobile

username=root

password=root

 

springIbatis整合:(通过SqlMapConfig.xml),配置文件全部放到src/config

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

      <property name="configLocation" value="/WEB-INF/classes/SqlMapConfig.xml"/>

      <property name="dataSource" ref="dataSource"/>

</bean>

公用Dao类设置:

<bean id="dao" class="net.sun.mobile_scm.dao.CommonDaoImpl">

      <property name="sqlMapClient" ref="sqlMapClient"></property>

</bean>

net.sun.mobile_scm.dao.CommonDaoImpl类写法:

public class CommonDaoImpl extends SqlMapClientTemplate implements CommonDao {

       public Object queryObject(String sqlId, Object parameter) throws SQLException {

       return getSqlMapClient().queryForObject(sqlId, parameter);

}//异常一般从DAOàService throws 抛到Aciton里,通过struts2的异常处理类来处理,然后显示在页面上,不要在DAO,Service里写try{}catch

Spring编码过滤器UTF-8,在web.xml里设置:

<!-- Spring UTF-8过滤器 ,放在struts2过滤器前面-->

<filter>

      <filter-name>CharsetFilter</filter-name>

      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

      <init-param>

           <param-name>encoding</param-name>

           <param-value>utf-8</param-value>

      </init-param>

</filter>

<filter-mapping>

      <filter-name>CharsetFilter</filter-name>

      <url-pattern>/*</url-pattern>

</filter-mapping>

Log4j.properties配置:log4j.jar放在lib里,log4j.properties放在src/config里:

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.SimpleLayout

log4j.rootCategory=DEBUG, consol

 

页面里数据从pageàrequestàSessionàApplication顺序来查找参数的,application类用listener侦听器来实现

public class SysInit implements ServletContextListener {

public void contextInitialized(ServletContextEvent event) {        //初始化方法

            ServletContext application = event.getServletContext(); //得到ServletContext

            String sysname = application.getInitParameter("sysname");

            application.setAttribute("sysname", sysname);     }          //变量存入application里

}

 

登录页面:user_login.jsp

id对应的css是“#”,class对应的css是“.”  ,background-color:#cccccc 背景颜色,font-size:12px字体大小

background-image:url(“images/xx.jsp”)背景图片,overflow:hidden没有滚动条,position:absolute绝对坐标

margin:25px 0 26px 0; (顺时针:上右下左)    z-index:10元素叠次顺序,数字越大显示在最前面,可以为负数

font-weight:bold; 文本的粗细 

 

1、页面登录窗口

颜色RGB:数字越小,颜色越深。FFFFFF是白色 000000是黑色

Jquery对象和Dom对象(原生对象)转换:

o = $(o);//jquery对象 ; o=o[0];//原生对象,原生对象才能用offsetLeft,offsetTop,offsetParent,

$("div.validateCodeDiv").css("display","block");  //显示DIV  ;  display:none//不显示

$("div.validateCodeDiv").css("top", top).css("left", left);//DIV设置top和left

$("input[name=account],input[name=passwd],#submitBtn").click(function(){…}//得到form里的控件事件

$("#submitBtn").mouseover(function(){this.src = "images/login_submitBtn2.gif";})//鼠标移上DIV显示图片

 

//绑定验证码图片单击实现换验证码

$("div.validateCodeDiv").click(function(event){

      changeCode();});       //生成验证码代码

event.stopPropagation();//防止冒泡,当click后,会一层层向上冒泡,因为是body[ $(document) ]里有个display:none属性,如果不阻止,单击DIV不显示该层。

 

正则表达式:判断空字符串

string.phototype.trim = function(){    return this.replace(/(^\s*)|(\s*$)/g,"");    }//以/开头;/g结尾 ;\s空格; * 0到多个;^开头;$结尾

 

2、页面欢迎窗口:

<!-- onselectstart IE下禁止选择文字      oncontextmenu IE取消鼠标右键-->

<body onselectstart="return false;" oncontextmenu="return false;">

Firefox浏览器中在CSS里加入:-moz-user-select: none; //禁止选择文字

 

透明度:filter: alpha(opacity=0);支持IE              opacity: 0;//支持FireFox

background-repeat:no-repeat;    //背景图像将仅显示一次 

repeat-x    //背景图像将在水平方向重复   repeat-y    //背景图像将在垂直方向重复

cursor: pointer;        //手图标

visibility: hidden; //隐藏不显示

visibility:hidden|visibledisplay:none|block区别:visibility隐藏后,仍然占据空间(效率高,不经常用)display隐藏后,不占据空间(效率低,经常用)

 

3.RBAC设计 基于角色的访问控制(Role-Based Access Control)

posted @ 2012-11-17 21:03  银在天下  阅读(140)  评论(0)    收藏  举报