zoukankan      html  css  js  c++  java
  • SSH使用总结(xml配置)

    所需要的jar包

    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop
    ="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    >

    <!-- 读取jdbc.properties里的配置信息 -->
    <bean
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <value>classpath:jdbc.properties</value>
    </property>
    </bean>

    <bean id="dataSource" destroy-method="close"
    class
    ="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    </bean>

    <!-- xml方式配置sessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingResources">
    <list>
    <value>com/anllin/usermgr/model/User.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.format_sql">true</prop>
    </props>
    </property>
    </bean>

    <!-- 开启事务管理 -->
    <bean id="txManager"
    class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!-- spring事务的xml配置 ,建议使用-->
    <aop:config>
    <aop:pointcut id="bussinessService"
    expression
    ="execution(* com.anllin.usermgr.service..*.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="bussinessService" />
    </aop:config>

    <!-- 对不同的方法进行不同的事务管理 -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
    <tx:method name="get*" read-only="true"/>
    <tx:method name="isExists*" read-only="true"/>
    <tx:method name="*" propagation="REQUIRED" read-only="false" />
    </tx:attributes>
    </tx:advice>

    <!-- UserDaoImpl继承 HibernateDaoSupport,即可使用hibernateTemplate-->
    <bean id="userDao" class="com.anllin.usermgr.dao.impl.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="userService" class="com.anllin.usermgr.service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"/>
    </bean>

    <bean id="listUsersAction" class="com.anllin.usermgr.action.ListUserAction">
    <property name="userService" ref="userService"/>
    </bean>

    <bean id="addUserAction" class="com.anllin.usermgr.action.AddUserAction">
    <property name="userService" ref="userService"/>
    </bean>

    <bean id="deleteUserAction" class="com.anllin.usermgr.action.DeleteUserAction">
    <property name="userService" ref="userService"></property>
    </bean>

    <bean id="getUserAction" class="com.anllin.usermgr.action.GetUserAction">
    <property name="userService" ref="userService"></property>
    </bean>

    <bean id="updateUserAction" class="com.anllin.usermgr.action.UpdateUserAction">
    <property name="userService" ref="userService"></property>
    </bean>
    </beans>

      

    struts.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>

    <package name="registration" namespace="/" extends="struts-default">
    <action name="listUser" class="listUsersAction">
    <result name="success">/listUsers.jsp</result>
    </action>

    <action name="addUser" class="addUserAction">
    <result name="success" type="redirect">listUser.action</result>
    </action>

    <action name="deleteUser" class="deleteUserAction">
    <result name="success" type="redirect">listUser.action</result>
    </action>

    <action name="getUser" class="getUserAction">
    <result name="success">updateUser.jsp</result>
    </action>

    <action name="updateUser" class="updateUserAction">
    <result name="success" type="redirect">listUser.action</result>
    </action>
    </package>

    </struts>

      

    jdbc.properties

    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url
    =jdbc\:mysql\://localhost\:3306/usermgr
    jdbc.username
    =root
    jdbc.password
    =123

      

    log4j.properties

    #
    # Hibernate
    , Relational Persistence for Idiomatic Java
    #
    # Copyright (c)
    2008, Red Hat Middleware LLC or third-party contributors as
    # indicated by the @author tags or express copyright attribution
    # statements applied by the authors. All third-party contributions are
    # distributed under license by Red Hat Middleware LLC.
    #
    # This copyrighted material is made available to anyone wishing to use
    , modify,
    # copy
    , or redistribute it subject to the terms and conditions of the GNU
    # Lesser General Public License
    , as published by the Free Software Foundation.
    #
    # This program is distributed in the hope that it will be useful
    ,
    # but WITHOUT ANY WARRANTY
    ; without even the implied warranty of MERCHANTABILITY
    # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
    # for more details.
    #
    # You should have received a copy of the GNU Lesser General Public License
    # along with this distribution
    ; if not, write to:
    # Free Software Foundation, Inc.
    #
    51 Franklin Street, Fifth Floor
    # Boston
    , MA 02110-1301 USA
    #

    #log4j.rootLogger
    =info, stdout
    log4j.appender.stdout
    =org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target
    =System.out
    log4j.appender.stdout.layout
    =org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern
    =%d{ABSOLUTE} %5p %c{1}:%L - %m%n
    log4j.rootLogger
    =warn, stdout


    #log4j.logger.org.hibernate
    =debug
    #log4j.logger.org.hibernate.test
    =info
    ### log schema export/update ###
    log4j.logger.org.hibernate.tool.hbm2ddl
    =debug
    #log4j.logger.org.hibernate.sql.ordering.antlr.OrderByFragmentTranslator
    =trace
    #log4j.logger.org.hibernate.ejb
    =debug
    #log4j.logger.org.hibernate.ejb.packaging
    =debug
    #log4j.logger.org.hibernate.reflection
    =debug


    #log4j.logger.org.hibernate.hql.ast.QueryTranslatorImpl
    =trace
    #log4j.logger.org.hibernate.hql.ast.HqlSqlWalker
    =trace
    #log4j.logger.org.hibernate.hql.ast.SqlGenerator
    =trace
    #log4j.logger.org.hibernate.hql.ast.AST
    =trace
    #log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder
    =trace
    #log4j.logger.org.hibernate.type.BasicTypeRegistry
    =trace


    #log4j.logger.org.hibernate.engine.Cascades
    =debug
    #log4j.logger.org.hibernate.hql
    =debug

    ### log just the SQL
    #log4j.logger.org.hibernate.SQL
    =debug

    ### log JDBC bind parameters ###
    #log4j.logger.org.hibernate.type
    =info
    #log4j.logger.org.hibernate.type
    =trace


    ### log HQL parse trees
    #log4j.logger.org.hibernate.hql
    =debug

    ### log cache activity ###
    #log4j.logger.org.hibernate.cache
    =debug

    ### log JDBC resource acquisition
    #log4j.logger.org.hibernate.jdbc
    =debug

    ### enable the following line if you want to track down connection ###
    ### leakages when using DriverManagerConnectionProvider ###
    #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider
    =trace

    #log4j.logger.org.jgroups
    =info
    #log4j.logger.org.jboss.cache
    =trace
    #log4j.logger.org.jboss.cache.RegionManager
    =info
    #log4j.logger.org.jboss.cache.lock
    =info
    #log4j.logger.org.jboss.cache.interceptors.PessimisticLockInterceptor
    =info
    #log4j.logger.org.jboss.cache.interceptors.UnlockInterceptor
    =info

      

    AddUserAction.java

    package com.anllin.usermgr.action;

    import com.anllin.usermgr.model.User;
    import com.anllin.usermgr.service.UserService;
    import com.opensymphony.xwork2.ActionSupport;

    public class AddUserAction extends ActionSupport
    {
    private User user;
    private UserService userService;

    public User getUser()
    {
    return user;
    }

    public void setUser(User user)
    {
    this.user = user;
    }

    public UserService getUserService()
    {
    return userService;
    }

    public void setUserService(UserService userService)
    {
    this.userService = userService;
    }

    @Override
    public String execute() throws Exception
    {
    if(user != null)
    {
    this.userService.add(user);
    }
    return SUCCESS;
    }
    }

      

    DeleteUserAction.java

    package com.anllin.usermgr.action;

    import org.apache.struts2.ServletActionContext;

    import com.anllin.usermgr.service.UserService;
    import com.opensymphony.xwork2.ActionSupport;

    public class DeleteUserAction extends ActionSupport
    {
    private int id;

    private UserService userService;

    public UserService getUserService()
    {
    return userService;
    }

    public void setUserService(UserService userService)
    {
    this.userService = userService;
    }

    @Override
    public String execute() throws Exception
    {
    id
    = Integer.parseInt(ServletActionContext.getRequest().getParameter("id").trim());
    if (id > 0)
    {
    userService.deleteById(id);
    }
    return SUCCESS;
    }
    }

      

    GetUserAction.java

    package com.anllin.usermgr.action;

    import org.apache.struts2.ServletActionContext;

    import com.anllin.usermgr.model.User;
    import com.anllin.usermgr.service.UserService;
    import com.opensymphony.xwork2.ActionSupport;

    public class GetUserAction extends ActionSupport
    {
    private User user;
    private UserService userService;
    public User getUser()
    {
    return user;
    }
    public void setUser(User user)
    {
    this.user = user;
    }
    public UserService getUserService()
    {
    return userService;
    }
    public void setUserService(UserService userService)
    {
    this.userService = userService;
    }

    @Override
    public String execute() throws Exception
    {
    int id = Integer.valueOf(ServletActionContext.getRequest().getParameter("id").trim());
    if(id >= 0)
    {
    this.user = userService.getById(id);
    }

    ServletActionContext.getRequest().setAttribute(
    "user",user);

    return SUCCESS;
    }
    }

      

    ListUserAction.java

    package com.anllin.usermgr.action;

    import java.util.List;

    import org.apache.struts2.ServletActionContext;

    import com.anllin.usermgr.model.User;
    import com.anllin.usermgr.service.UserService;
    import com.opensymphony.xwork2.ActionSupport;

    public class ListUserAction extends ActionSupport
    {
    private List<User> users;
    private UserService userService;

    public List<User> getUsers()
    {
    return users;
    }

    public void setUsers(List<User> users)
    {
    this.users = users;
    }

    public UserService getUserService()
    {
    return userService;
    }

    public void setUserService(UserService userService)
    {
    this.userService = userService;
    }

    @Override
    public String execute() throws Exception
    {
    users
    = userService.getAll();
    ServletActionContext.getContext().getSession().put(
    "users",users);
    return SUCCESS;
    }
    }

      

    UpdateUserAction.java

    package com.anllin.usermgr.action;

    import com.anllin.usermgr.model.User;
    import com.anllin.usermgr.service.UserService;
    import com.opensymphony.xwork2.ActionSupport;

    public class UpdateUserAction extends ActionSupport
    {
    private User user;
    private UserService userService;
    public User getUser()
    {
    return user;
    }
    public void setUser(User user)
    {
    this.user = user;
    }
    public UserService getUserService()
    {
    return userService;
    }
    public void setUserService(UserService userService)
    {
    this.userService = userService;
    }

    @Override
    public String execute() throws Exception
    {
    if(user != null)
    {
    userService.update(user);
    }
    return super.execute();
    }
    }

      

    UserDao.java

    package com.anllin.usermgr.dao;

    import java.util.List;

    import com.anllin.usermgr.model.User;

    public interface UserDao
    {
    void add(User user);
    void update(User user);
    void delete(User user);
    void deleteById(int id);
    User getById(
    int id);
    List
    <User> getByName(String username);
    List
    <User> getAll();
    }

      

    UserDaoImpl.java

    package com.anllin.usermgr.dao.impl;

    import java.util.List;

    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    import com.anllin.usermgr.dao.UserDao;
    import com.anllin.usermgr.model.User;

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao
    {
    @Override
    public void add(User user)
    {
    this.getHibernateTemplate().save(user);
    }

    @Override
    public void delete(User user)
    {
    this.getHibernateTemplate().delete(user);
    }

    @Override
    public void deleteById(int id)
    {
    User user
    = (User)this.getHibernateTemplate().get(User.class,id);
    delete(user);
    }

    @SuppressWarnings(
    "unchecked")
    @Override
    public List<User> getAll()
    {
    return (List<User>)this.getHibernateTemplate().find("from User");
    }

    @Override
    public User getById(int id)
    {
    return (User)this.getHibernateTemplate().get(User.class,id);
    }

    @SuppressWarnings(
    "unchecked")
    @Override
    public List<User> getByName(String username)
    {
    List
    <User> users = (List<User>)this.getHibernateTemplate().find("from User as u where u.username=?",username);

    return users;
    }

    @Override
    public void update(User user)
    {
    this.getHibernateTemplate().update(user);
    }

    }

      

    User.java

    package com.anllin.usermgr.model;

    import java.sql.Date;

    public class User
    {
    private int id;
    private String username;
    private String password;
    private int age;
    private Date birthday;

    public int getId()
    {
    return id;
    }

    public void setId(int id)
    {
    this.id = id;
    }

    public String getUsername()
    {
    return username;
    }

    public void setUsername(String username)
    {
    this.username = username;
    }

    public String getPassword()
    {
    return password;
    }

    public void setPassword(String password)
    {
    this.password = password;
    }

    public int getAge()
    {
    return age;
    }

    public void setAge(int age)
    {
    this.age = age;
    }

    public Date getBirthday()
    {
    return birthday;
    }

    public void setBirthday(Date birthday)
    {
    this.birthday = birthday;
    }

    }

      

    User.hbm.xml

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

    <hibernate-mapping>
    <class name="com.anllin.usermgr.model.User" dynamic-update="true" dynamic-insert="true">
    <id name="id" column="id" type="integer">
    <generator class="native"/>
    </id>
    <property name="username" type="string">
    <column name="username" length="20"/>
    </property>
    <property name="password" type="string">
    <column name="password" length="20"/>
    </property>
    <property name="age" type="integer">
    <column name="age"/>
    </property>
    <property name="birthday" type="date">
    <column name="birthday"/>
    </property>
    </class>
    </hibernate-mapping>

      

    UserService.java

    package com.anllin.usermgr.service;

    import java.util.List;

    import com.anllin.usermgr.model.User;

    public interface UserService
    {
    void add(User user);
    void update(User user);
    void delete(User user);
    void deleteById(int id);
    User getById(
    int id);
    List
    <User> getByName(String username);
    List
    <User> getAll();
    boolean isExistsUser(String username);
    }

      

    UserServiceImpl.java

    package com.anllin.usermgr.service.impl;

    import java.util.List;

    import com.anllin.usermgr.dao.UserDao;
    import com.anllin.usermgr.model.User;
    import com.anllin.usermgr.service.UserService;

    public class UserServiceImpl implements UserService
    {
    private UserDao userDao;

    public UserDao getUserDao()
    {
    return userDao;
    }

    public void setUserDao(UserDao userDao)
    {
    this.userDao = userDao;
    }

    @Override
    public void add(User user)
    {
    this.userDao.add(user);
    }

    @Override
    public void delete(User user)
    {
    this.userDao.delete(user);
    }

    @Override
    public void deleteById(int id)
    {
    this.userDao.deleteById(id);
    }

    @Override
    public List<User> getAll()
    {
    return this.userDao.getAll();
    }

    @Override
    public User getById(int id)
    {
    return this.userDao.getById(id);
    }

    @Override
    public List<User> getByName(String username)
    {
    return this.userDao.getByName(username);
    }

    @Override
    public boolean isExistsUser(String username)
    {
    List
    <User> users = getByName(username);
    if(users != null && users.size() > 0)
    {
    return true;
    }
    return false;
    }

    @Override
    public void update(User user)
    {
    this.userDao.update(user);
    }

    }

      

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    >
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <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>/*</url-pattern>
    </filter-mapping>

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:beans.xml</param-value>
    </context-param>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    </web-app>

      

    addUser.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>Add User</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <style type="text/css">
    h1
    {
    color
    :blue;
    }
    </style>"
    </head>

    <body>
    <h1>Add User</h1>
    <s:form action="addUser.action" theme="simple">
    username:
    <s:textfield name="user.username"/><br/>
    password:
    <s:password name="user.password"/><br/>
    age:
    <s:textfield name="user.age"/><br/>
    birthday:
    <s:textfield name="user.birthday"/><br/>
    <s:submit value="submit"/>
    </s:form>
    </body>
    </html>

      

    index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"
    >
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>User Manager</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">

    <style type="text/css">
    body
    {
    font-family
    :Courial new,sans-serif;
    font-size
    : 16px;
    }
    div
    {
    margin
    :0 auto;
    text-align
    : center;
    background
    : window;
    }
    div h1
    {
    color
    :Blue;
    }
    div a:link
    {
    color
    :blue;
    }
    div a:hover
    {
    color
    :red;
    font-size
    :18px;
    font-weight
    : bold;
    font-style
    : italic;
    }

    </style>
    </head>

    <body>
    <div>
    <h1>User Manager</h1><br/><br/><br/>
    <s:a href="listUser.action">Show All Users</s:a><br/><br/><br/>
    <s:a href="addUser.jsp">Add a New User</s:a><br/>
    </div>
    </body>
    </html>

      

    listUsers.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>List All Users</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <style type="text/css">
    table
    {
    border-collapse
    : collapse;
    }
    table tr th
    {
    background
    : MediumSlateBlue;
    color
    : white;
    }
    table tr td
    {
    border
    :1px solid black;
    background
    : AliceBlue;
    }
    h1
    {
    color
    :blue;
    }
    </style>
    </head>

    <body>
    <h1 align="center">List All Users</h1>
    <table align="center" width="80%">
    <tr>
    <th>username</th>
    <th>password</th>
    <th>age</th>
    <th>birthday</th>
    <th>update</th>
    <th>delete</th>
    </tr>
    <s:iterator value="%{#session.users}">
    <tr>
    <td>
    <s:property value="username"/>
    </td>
    <td>
    <s:property value="password"/>
    </td>
    <td>
    <s:property value="age"/>
    </td>
    <td>
    <s:property value="birthday"/>
    </td>
    <td>
    <s:a href="getUser.action?id=%{#this.id}">update</s:a>
    </td>
    <td>
    <s:a href="deleteUser.action?id=%{#this.id}">delete</s:a>
    </td>
    </tr>
    </s:iterator>
    </table>
    </body>
    </html>

      

    updateUser.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">

    <title>Update User</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">

    <STYLE type="text/css">
    h1
    {
    color
    : blue;
    }
    </STYLE>
    </head>

    <body>
    <h1>Update User</h1>
    <s:form action="updateUser.action" theme="simple">
    <s:hidden name="user.id" value="%{#request.user.id}"></s:hidden>
    username:
    <s:textfield name="user.username" value="%{#request.user.username}"/><br/>
    password:
    <s:textfield name="user.password" value="%{#request.user.password}"/><br/>
    age:
    <s:textfield name="user.age" value="%{#request.user.age}"/><br/>
    birthday:
    <s:textfield name="user.birthday" value="%{#request.user.birthday}"/><br/>
    <s:submit value="sumbit changed"></s:submit>
    </s:form>
    <s:debug></s:debug>
    </body>
    </html>

      

  • 相关阅读:
    <c:if></c:if>用法-转载
    Windows下配置Apache服务器
    ScrureCRT访问CentOS时出现乱码的解决办法
    Windows平台下Git服务器搭建
    Group_Concat函数示例
    Mysql Federated Server 示例
    MySQL几个特别语法示例
    MySQL事件调度器
    Disruptor Java版和.NET版的区别
    委托的三种实现方式
  • 原文地址:https://www.cnblogs.com/zfc2201/p/2143499.html
Copyright © 2011-2022 走看看