`
收藏列表
标题 标签 来源
springboot log4j2配置 springboot, maven http://blog.csdn.net/baodinglaolang/article/details/51323651
1、修改pom文件

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
	<exclusions>
		<!-- 发布时去除内置tomcat -->
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
		</exclusion>
		<exclusion>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2、加入log4j2.xml
在src/main/resources中加入配置文件,详细配置不在赘述

3、修改application.properties

logging.config=classpath:log4j2.xml

大功告成!
nginx转发示例配置文件 nginx
user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream,text/html;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
#    default_type 'text/html';
    charset utf-8,gbk;

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    gzip_http_version 1.0;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_disable "MSIE [1-6].";
    gzip_types text/plain application/x-javascript text/css text/javascript application/javascript;

    upstream weblogic{
        server 127.0.0.1:9081;
    }

    server {
        listen       80;
        server_name  localhost;

#       charset koi8-r;

        access_log  logs/host.access.log  main;

        root html;
        index index.html index.htm;
#        location / {
#            root   html;
#            index  index.html index.htm;
#       }
        location /myt/pay/{
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }
        location /myt/wx/{
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }
        location /myt/libs/ {
          root   html;
          index  index.html index.htm;
        }
        location /myt/css/ {
		  root   html;
          index  index.html index.htm;
        }
        location /myt/images/ {
		  root   html;
          index  index.html index.htm;
        }
		location /myt/nuui/ {
		  root   html;
          index  index.html index.htm;
        }
        location /myt/component/ {
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }
        location /myt/module/ {
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }
        location /myt/weixin/ {
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }
        location /myt/app/ {
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }
        location /myt/main.html {
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }

        location /myt/service/ {
          proxy_pass http://weblogic;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;
        }

        location /billing-admin {
          proxy_pass http://127.0.0.1:9080;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          charset utf-8;      
        }

        location /group1 {
          proxy_pass http://117.79.146.146:7070;
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 10m;
          client_body_buffer_size 128k;
          proxy_connect_timeout 90;
          proxy_send_timeout 90;
          proxy_read_timeout 90;
          proxy_buffer_size 4k;
          proxy_buffers 4 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
SpringBoot MVC在Maven架构下的pom.xml配置文件 springboot, mvc, maven 注意:这里必须要用jdk7进行编译,否则会报错
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <properties><java.version>1.7</java.version></properties>

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.BUILD-SNAPSHOT</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <!-- Add Spring repositories -->
    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>
eclipse配置jdk运行环境内存大小防止内存溢出 eclipse, jdk
-Xms1024m -Xmx2048m -XX:PermSize=512M -XX:MaxPermSize=1024M
linux命令行执行java文件的编译和运行 linux, java
javac -Xlint -classpath .:/usr/lib64/opencv-249.jar org/ofbiz/ofc/svmcore/test.java

java -classpath .:/usr/lib64/opencv-249.jar org/ofbiz/ofc/svmcore/test
Linux服务器防火墙IpTables规则配置 linux, iptables, 防火墙
找到防火墙iptables规则配置文件
/etc/sysconfig/iptables

#远程SSH登陆,我们要开启22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

#WEB服务器,开启80端口
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

#邮件服务器,开启25,110端口.
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
iptables -A INPUT -p tcp –dport 25 -j ACCEPT

#FTP服务器,开启20,21端口

iptables -A INPUT -p tcp -m multiport –dport 21,60000:60050 -j ACCEPT

#如果做了DNS服务器,开启53端口

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp –sport 53 -j ACCEPT
iptables -A INPUT -p udp –dport 53 -j ACCEPT

重启防火墙配置生效
service iptables restart
多个jdk版本在命令行模式下的切换 jdk
前提是如果window下配置了如下两个jdk,默认使用JDK7,环境变量配置如下:
JAVA_6_HOME=C:\Program Files\Java\jdk1.6.0_45
JAVA_7_HOME=D:\Program Files\Java\jdk1.7.0_07
JAVA_HOME=%JAVA_7_HOME%

cmd命令行模式下切换jdk版本环境的方法

java -version
javac -version

set JAVA_HOME
set JAVA_HOME=%JAVA_6_HOME%
echo %JAVA_HOME%

java -version
javac -version

echo %Path%
set Path=%JAVA_6_HOME%\bin;%Path%
echo %Path%

java -version
javac -version
maven在dos命令行模式下打包项目 maven
mvn install -Dmaven.test.skip=true 给任何目标添加maven.test.skip 属性就能跳过测试 
(前提是必须先将目录在命令行模式下切换到项目所在根目录)
mysql命令行模式下导入sql文件 mysql
D:\Program Files (x86)\MySQL\MySQL Server 5.1\bin>mysql -uroot -proot taskmanager <C:\Users\qiangjiyi\Downloads\backs.sql
下拉列表框中动态显示页码且当选择某个页码时跳转到某个页面 select, html, js
<script type="text/javascript">
	function _go(select){
		var index = select.selectedIndex; // 选中的option的下标
		var option = select.options[index]; // 通过下标得到option元素的对象
		var value = option.value; // 通过option元素对象得到value的值
		loaction = "<c:url value='/CustomerServlet?method=query&currPage='/>" + value;
	}
</script>

<select onchange="_go(this)">
	<c:forEach begin="1" end="${pageBean.totalPage}" var="i">
		<option value="${i}" <c:if test="${pageBean.currPage eq i}">selected="selected"</c:if>>
			${i}
		</option>
	</c:forEach>
</select>
jsp页面上复选框组的显示与回显 checkbox, js, html
<script type="text/javascript">
$(document).ready(function(){
    var boxObj = $(":checkbox[name=transportMethodOfFirewood]"); //获取所有的复选框
    var transportMethod = '${village.transportMethodOfFirewood}'; //用el表达式获取在控制层存放的复选框的值为字符串类型
    var method = transportMethod.split(','); //去掉它们之间的分割符“,”   
    var index = 0;
    for(i=0;i<boxObj.length;i++){
       for(j=0;j<method.length;j++){            
           if(boxObj[i].value == $.trim(method[j]))  //如果值与修改前的值相等
           {
               boxObj[i].checked= true;
           }
       }
    }          
});
</script>

<input type="checkbox" name="transportMethodOfFirewood" value="1" id="one"/><label for="one">拖拉机</label>
<input type="checkbox" name="transportMethodOfFirewood" value="2" id="two"/><label for="two">机动三轮车</label>
<input type="checkbox" name="transportMethodOfFirewood" value="3" id="three"/><label for="three">脚蹬三轮车</label>
<input type="checkbox" name="transportMethodOfFirewood" value="4" id="four"/><label for="four">地排车</label>
<input type="checkbox" name="transportMethodOfFirewood" value="5" id="five"/><label for="five">其他</label>
jsp页面上单选按钮组的显示与回显 radio, struts, webwork
<ww:radio name="sex" value="${user.sex}" list="#{1:'男', 0:'女'}" />
freemarker本地java调用的简单示例 freemarker, ftl
public static void main(String[] args) throws IOException, TemplateException {
		// 创建一个freemarker的配置对象
		Configuration conf = new Configuration();
		// 设置模板加载的路径
		conf.setDirectoryForTemplateLoading(new File("E:\\ofbiz_project\\TestFreemarker\\template"));
		// 设置配置对象的对象包装类
		conf.setObjectWrapper(new DefaultObjectWrapper());
		// 根据配置对象取得freemarker模板
		Template temp = conf.getTemplate("test.ftl");
		// 创建map对象并为其添加键值对
		Map<String, Object> root = new HashMap<String, Object>();
		root.put("mylove", "贾凯幸");
		Writer out = new OutputStreamWriter(System.out);
		// 将map对象传入到模板中并通过输出流输出
		temp.process(root, out);
		out.flush();
	}
将ofbiz的开发环境JDK版本更换为1.7时需要修改的配置文件 ofbiz
<!--找到以下目录对应的xml文件,然后查找16,修改成17,在build.xml中clean-all,最后load-demo即可-->

%ofbiz_home%\common.xml
%ofbiz_home%\macros.xml

%ofbiz_home%\framework\start\build.xml
%ofbiz_home%\framework\base\build.xml
%ofbiz_home%\framework\sql\build.xml
%ofbiz_home%\framework\bi\build.xml

%ofbiz_home%\applications\order\build.xml
基于ofbiz的一些基本常用代码 ofbiz
<!--controller.xml文件中引入公共的控制器信息-->
<include location="component://common/webcommon/WEB-INF/common-controller.xml"/>

<!--PracticeForms.xml文件中的form表单-->
<form name="ListPersons" type="list" list-name="persons" list-entry-name="person" target="updatePracticePerson" paginate="personForm">
	<auto-field-service service-name="updatePracticePerson" default-field-type="edit" map-name="person"/>
	<field name="partyId"><hidden/></field>
	<field name="submitButton" title="Update" widget-style="smallSubmit"><submit button-type="button"/></field>
	<field name="deletePracticePerson" title="Delete Person" widget-style="buttontext">
		<hyperlink target="deletePracticePerson?partyId=${person.partyId}" description="Delete" />
	</field>
</form>

<!--CommonScreens.xml文件中的screen-widget-->
<screen name="main-decorator">
	<section>
		<actions>
			<property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
			<property-map resource="PracticeUiLabels" map-name="uiLabelMap" global="true"/>
			<set field="layoutSettins.companyName" from-field="uiLabelMap.PracticeCompanyName" global="true"/>
			<set field="acticeApp" value="practice" global="true"/>
			<set field="applicationMenuName" value="PracticeAppBar" global="true"/>
			<set field="applicationMenuLocation" value="component://practice/widget/PracticeMenus.xml" global="true'/>			
		</actions>
		<widgets>
			<include-screen name="GlobalDecorator" location="component://common/widget/CommonScreens.xml"/>
		</widgets>
	</section>
</screen>

<screen name="CommonDecorator">
	<section>
		<widgets>
			<include-menu name="PracticeMenu" location="component://practice/widget/PracticeMenus.xml"/>
			<include-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"/>
			<decorator-section-include name="body"/>
		</widgets>
	</section>
</screen>

<!--PracticeUiLabels.xml中ui国际化配置信息-->
<property key="PracticeApplication">
	<value xml:lang="en">This is first practice</value>
</property>
<property key="PracticeCompanyName">
	<value xml:lang="en">OFBIZ: Practice</value>
</property>

<!--PracticeMenus.xml中添加一个菜单和两个菜单项-->
<menu name="EventMenu" default-menu-item-name="eventMinilang" default-selected-style="selected" type="simple" menu-container-style="button-bar button-style-1" selected-menuitem-context-field-name="headerItem">
	<menu-item name="eventMinilang" title="Create Person --- Event Minilang">
		<link target="createPracticePersonEventM"/>
	</menu-item>
	<menu-item name="eventJava" title="Create Person --- Event Java">
		<link target="createPracticePersonEventJ"/>
	</menu-item>
</menu>
基于ofbiz在页面中显示一张数据库表 ofbiz
<!--
关键代码1:在widget的screen中,action部分用<entity-condition 标签指定实体名和实体列表名;
关键代码2:在widget的screen中,widgets部分用<include-form 标签指定被引用表单的位置和表单名;
-->
<screen name="guestbook">
    <section>
        <actions>
			<!-- find HelloPerson by condition.  since there is no conditions, all values of HelloPerson are returned in allGuests -->
            <entity-condition entity-name="HelloPerson" list-name="allGuests"><order-by field-name="helloPersonId"/></entity-condition>
			<!--窗口中调用的表单用到的实体数据在该处指出!!如果该句设置得不对表单中将不显示数据!!!-->
        </actions>
        <widgets>
            <decorator-screen name="CommonDecorator">
				<decorator-section name="body">
					<label>我们的客人和他们说的话</label>  <!-- a label/header -->
					<!-- use this form directly, instead of going through a Freemarker template again -->
					<include-form name="GuestbookList" location="component://hello3/webapp/hello3/guestbook/GuestbookForms.xml"/>					
				</decorator-section>
             </decorator-screen>
        </widgets>
    </section>
</screen>

<!--
关键代码3:在表单文件内的对应(上面的<include-form 标签指出的表单名)的表单代码处,<form 标签的type要设成list,list-name要和widget中窗口中的action部分的列表名一致。
-->
<form name="GuestbookList" type="list" list-name="allGuests">
	<!-- 该处的列表名和widget的窗口action中指定的列表名要对应!this form just lists all the values of allGuests -->
    <auto-fields-entity entity-name="HelloPerson" default-field-type="display"/>
	<!-- 自动显示指定实体的所有域automatically display all fields from HelloPerson -->  
</form>

<!--
总体思路就是:form根据实体定义创建表头,action里的entity condition根据条件从数据库中取出数据显示于表中,这就完成了在页面上显示数据库表的过程。
-->
搜索框样式代码 html, css, search
<style type="text/css">
input[type=text],input[type=password] {
   font-size: 13px;
   min-height: 32px;
   margin: 0;
   padding: 7px 8px;
   outline: none;
   color: #333;
   background-color: #fff;
   background-repeat: no-repeat;
   background-position: right center;
   border: 1px solid #ccc;
   border-radius: 3px;
   box-shadow: inset 0 1px 2px rgba(0,0,0,0.075);
   -moz-box-sizing: border-box;
   box-sizing: border-box;
   transition: all 0.15s ease-in;
   -webkit-transition: all 0.15s ease-in 0;
   vertical-align: middle;
 }
 .button {
   position: relative;
   display: inline-block;
   margin: 0;
   padding: 8px 15px;
   font-size: 13px;
   font-weight: bold;
   color: #333;
   text-shadow: 0 1px 0 rgba(255,255,255,0.9);
   white-space: nowrap;
   background-color: #eaeaea;
   background-image: -moz-linear-gradient(#fafafa, #eaeaea);
   background-image: -webkit-linear-gradient(#fafafa, #eaeaea);
   background-image: linear-gradient(#fafafa, #eaeaea);
   background-repeat: repeat-x;
   border-radius: 3px;
   border: 1px solid #ddd;
   border-bottom-color: #c5c5c5;
   box-shadow: 0 1px 3px rgba(0,0,0,.05);
   vertical-align: middle;
   cursor: pointer;
   -moz-box-sizing: border-box;
   box-sizing: border-box;
   -webkit-touch-callout: none;
   -webkit-user-select: none;
   -khtml-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
   user-select: none;
   -webkit-appearance: none;
 }
 .button:hover,
 .button:active {
   background-position: 0 -15px;
   border-color: #ccc #ccc #b5b5b5;
 }
 .button:active {
   background-color: #dadada;
   border-color: #b5b5b5;
   background-image: none;
   box-shadow: inset 0 3px 5px rgba(0,0,0,.15);
 }
 .button:focus,
 input[type=text]:focus,
 input[type=password]:focus {
   outline: none;
   border-color: #51a7e8;
   box-shadow: inset 0 1px 2px rgba(0,0,0,.075), 0 0 5px rgba(81,167,232,.5);
 }

 label[for=search] {
   display: block;
   text-align: left;
 }
 #search label {
   font-weight: 200;
   padding: 5px 0;
 }
 #search input[type=text] {
   font-size: 18px;
   width: 705px;
 }
 #search .button {
   padding: 10px;
   width: 90px;
 }
</style>

<form name="search" action="../message/question_search.action" method="post" style="width:1000px; margin:auto;font-size:12px;">
<div style="border:1px solid #CDCDCD;height:53px; padding-left:3px;background-color:#F2F2F2;">
	<div style="padding-top:7px; text-align:left" id="search">
		<input type="text" name="keyword" value="${keyword }"/>
		<input class="button" type="submit" value="搜索">
	</div>
</div>
</form>
Hibernate多表关联实体映射文件的配置 hibernate
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.oa.domain">

	<class name="Privilege" table="itcast_privilege">
		<id name="id">
            <generator class="native"/>
		</id>
		<property name="url"/>
		<property name="name"/>
		<property name="icon"/>
		
		<!-- roles属性,本类与Role的多对多 -->
		<set name="roles" table="itcast_role_privilege">
			<key column="privilegeId"></key>
			<many-to-many class="Role" column="roleId"></many-to-many>
		</set>
		
		<!-- parent属性,本类与Privilege(上级)的多对一 -->
		<many-to-one name="parent" class="Privilege" column="parentId"></many-to-one>
		
		<!-- children属性,本类与Privilege(下级)的一对多 -->
		<set name="children" order-by="id" lazy="false">
			<key column="parentId"></key>
			<one-to-many class="Privilege"/>
		</set>
		
	</class>
	
</hibernate-mapping>

/************************************************************************************/

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="cn.itcast.oa.domain">

	<class name="Role" table="itcast_role">
		<id name="id">
            <generator class="native"/>
		</id>
		<property name="name"/>
		<property name="description"/>
		
		<!-- users属性,本类与User的多对多 -->
		<set name="users" table="itcast_user_role">
			<key column="roleId"></key>
			<many-to-many class="User" column="userId"></many-to-many>
		</set>

		<!-- privileges属性,本类与Privilege的多对多 -->
		<set name="privileges" table="itcast_role_privilege" lazy="false">
			<key column="roleId"></key>
			<many-to-many class="Privilege" column="privilegeId"></many-to-many>
		</set>
		
	</class>
	
</hibernate-mapping>
鼠标移动到表格的行时,改变其背景色 js 鼠标移动到表格的行时,改变其背景色
<table border="1">
  <tr onmouseover="this.style.backgroundColor='#dddddd'" onmouseout="this.style.backgroundColor='#ffffff'">
    <td>当鼠标移动到我所在的行时,我的背景色会改变</td>
  </tr>
</table>
Global site tag (gtag.js) - Google Analytics