SSI框架为struts、spring、ibatis,在该框架中,使用ibatis作为数据持久层,其中ibatis使用最新版本mybatis3。

注:本文使用版本:struts-2.3.4、spring-3.2.1、mybatis-3.2.1

一、框架下载   1、Struts2:http://struts.apache.org/download    2、Spring:http://www.springsource.org/download/community   3、mybatis:https://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.2.1.zip   mybatis-spring: https://code.google.com/p/mybatis/downloads/list?q=label:Product-Spring

二、创建项目,添加jar包  
1、创建java web项目testSSI.  
2、添加struts包:

01.aopalliance-1.0.jar、
02.freemarker-2.3.19.jar,
03.ognl-3.0.5.jar,
04.struts2-core-2.3.4.jar,
05.struts2-spring-plugin-2.3.4.jar,
06.xwork-core-2.3.4.jar,
07.commons-fileupload-1.2.2.jar、
08.commons-logging-api-1.1.jar、
09.commons-io-2.0.1.jar、
10.commons-lang-2.4.jar、
11.commons-lang3-3.1.jar、
12.commons-logging-api-1.1.jar。

3、添加spring包:

view plain copy
01.spring-aop-3.2.1.RELEASE.jar、
02.spring-aspects-3.2.1.RELEASE.jar、
03.spring-beans-3.2.1.RELEASE.jar、
04.spring-context-3.2.1.RELEASE.jar、
05.spring-context-support-3.2.1.RELEASE.jar、
06.spring-core-3.2.1.RELEASE.jar、
07.spring-expression-3.2.1.RELEASE.jar、
08.spring-jdbc-3.2.1.RELEASE.jar、
09.spring-orm-3.2.1.RELEASE.jar、
10.spring-test-3.2.1.RELEASE.jar、
11.spring-tx-3.2.1.RELEASE.jar、
12.spring-web-3.2.1.RELEASE.jar。

4、添加ibatis包:

01.mybatis-3.2.1.jar
02.mybatis-spring-1.2.0.jar

5、添加其他包:

01.ojdbc14.jar 【下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 】
02.aspectjweaver.jar 【下载地址 http://search.maven.org/remotecontent?filepath=org/aspectj/aspectjweaver/1.6.12/aspectjweaver-1.6.12.jar 】
03.javassist-3.15.0-GA.jar
04.c3p0-0.9.1.jar 【下载地址:https://code.google.com/p/aicms/downloads/detail?name=c3p0-0.9.1.jar&can=2&q=】

三、配置struts  
1、配置struts核心过滤器。  
打开web.xml,配置struts核心过滤器和过滤器映射。  
web.xml文件代码如下:

01.<?xml version="1.0" encoding="UTF-8"?>
02.<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
05. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
06. <display-name></display-name>
07.
08. <!-- 定义Struts 2的核心控制器 -->
09. <filter>
10. <filter-name>struts2</filter-name>
11. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
12. </filter>
13. <filter-mapping>
14. <filter-name>struts2</filter-name>
15. <url-pattern>*.action</url-pattern>
16. </filter-mapping>
17.
18. <listener>
19. <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
20. </listener>
21.
22. <welcome-file-list>
23. <welcome-file>index.html</welcome-file>
24. <welcome-file>index.htm</welcome-file>
25. <welcome-file>index.jsp</welcome-file>
26. <welcome-file>default.html</welcome-file>
27. <welcome-file>default.htm</welcome-file>
28. <welcome-file>default.jsp</welcome-file>
29. </welcome-file-list>
30.
31.</web-app>

2、建立BaseAction。  
新建包com.hsinghsu.testSSI.action,在其中建立类BaseAction,继承ActionSupport类。  
BaseAction.java文件代码如下:

01.package com.hsinghsu.testSSI.action;
02.
03.import com.opensymphony.xwork2.ActionSupport;
04.
05.public class BaseAction extends ActionSupport{
06.
07. /**
08. *
09. */
10. private static final long serialVersionUID = 4565394360208096613L;
11.
12.}

3、编写测试struts的Action。  
在包com.hsinghsu.testSSI.action中建立LoginAction类,继承BaseAction,作为简单的struts测试。  
LoginAction.java文件代码如下:

01.package com.hsinghsu.testSSI.action;
02.
03.public class LoginAction extends BaseAction {
04.
05. /**
06. *
07. */
08. private static final long serialVersionUID = -6144396976094110475L;
09.
10. public String execute() throws Exception
11. {
12. return "success";
13. }
14.
15.}

4、配置action。  
在struts.xml文件中,添加对LoginAction的配置。  
struts.xml文件代码如下:

01.<?xml version="1.0" encoding="UTF-8" ?>
02.
03.<!DOCTYPE struts PUBLIC
04. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
05. "http://struts.apache.org/dtds/struts-2.3.dtd">
06.
07.<struts>
08. <constant name="struts.objectFactory" value="spring" />
09. <constant name="struts.i18n.encoding" value="UTF-8" />
10. <constant name="struts.i18n.reload" value="false" />
11. <constant name="struts.configuration.xml.reload" value="false" />
12. <constant name="struts.custom.i18n.resources" value="globalMessages" />
13. <constant name="struts.action.extension" value="action,," />
14.
15. <constant name="struts.convention.package.locators.basePackage"
16. value="com.hsinghsu.testSSI.action" />
17. <constant name="struts.convention.result.path" value="/" />
18. <constant name="struts.serve.static" value="true" />
19. <constant name="struts.serve.static.browserCache" value="false" />
20.
21.
22. <package name="com.hsinghsu.testSSI.action.test" extends="struts-default">
23. <action name="login" class="com.hsinghsu.testSSI.action.LoginAction">
24. <result name="success">/jsp/welcome.jsp</result>
25. </action>
26. </package>
27.
28.</struts>

5、建立测试jsp页面  
新建测试jsp页面welcome.jsp。  
welcome.jsp文件代码如下:

01.<%@ page language="java" pageEncoding="UTF-8"%>
02.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
03.<html>
04.<head>
05.<title>IWelcome</title>
06.</head>
07.<body>
08.Welcome HsingHsu
09.</body>
10.</html>

6、配置spring  
打开applicationContext.xml文件,配置spring,添加action bean。  
applicationContext.xml文件代码如下:

01.<?xml version="1.0" encoding="UTF-8"?>
02.<beans xmlns="http://www.springframework.org/schema/beans"
03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
04. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
05. xmlns:context="http://www.springframework.org/schema/context"
06. xsi:schemaLocation="
07. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
08. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
09. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
11. ">
12.
13. <bean id="loginAction" class="com.hsinghsu.testSSI.action.LoginAction"/>
14.
15.</beans>

7、配置Spring监听器  
打开web.xml,添加Spring监听器。  
web.xml文件代码如下:

01.<?xml version="1.0" encoding="UTF-8"?>
02.<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
05. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
06. <display-name></display-name>
07.
08. <context-param>
09. <param-name>contextConfigLocation</param-name>
10. <param-value>
11. classpath:applicationContext.xml
12. </param-value>
13. </context-param>
14.
15. <!-- ssh 中文过滤 -->
16. <filter>
17. <filter-name>characterEncoding</filter-name>
18. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
19. <init-param>
20. <param-name>encoding</param-name>
21. <param-value>utf-8</param-value>
22. </init-param>
23. <init-param>
24. <param-name>forceEncoding</param-name>
25. <param-value>true</param-value>
26. </init-param>
27. </filter>
28. <filter-mapping>
29. <filter-name>characterEncoding</filter-name>
30. <url-pattern>/*</url-pattern>
31. </filter-mapping>
32.
33. <!-- 定义Struts 2的核心控制器 -->
34. <filter>
35. <filter-name>struts2</filter-name>
36. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
37. </filter>
38. <filter-mapping>
39. <filter-name>struts2</filter-name>
40. <url-pattern>*.action</url-pattern>
41. </filter-mapping>
42.
43. <!-- 对Spring 容器进行实例化 -->
44. <listener>
45. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
46. </listener>
47. <listener>
48. <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
49. </listener>
50.
51. <welcome-file-list>
52. <welcome-file>index.html</welcome-file>
53. <welcome-file>index.htm</welcome-file>
54. <welcome-file>index.jsp</welcome-file>
55. <welcome-file>default.html</welcome-file>
56. <welcome-file>default.htm</welcome-file>
57. <welcome-file>default.jsp</welcome-file>
58. </welcome-file-list>
59.
60.</web-app>

8、配置tomcat并启动,在浏览器中输入http://localhost:8686/testSSI/login.action

则页面会显示Welcome HsingHsu。

四、配置ibatis

1、建立数据库与数据表   本文采用oracle数据库,建立T_TEST_USER表,新建列ID,NAME,PWD,AGE,SEX。插入一条数据,如id:1,name:hsing,pwd:hsu。   2、配置ibatis数据库连接等配置。新建jdbc.oracle.properties文件。   jdbc.oracle.properties文件代码如下:

01.ibatis.connection.driver_class oracle.jdbc.driver.OracleDriver
02.ibatis.connection.url jdbc:oracle:thin:@10.127.58.1:1521:ora11g
03.ibatis.connection.username adm
04.ibatis.connection.password adm
05.
06.c3p0.acquireIncrement=3
07.c3p0.idleConnectionTextPeriod=900
08.c3p0.minPoolSize=2
09.c3p0.maxPoolSize=50
10.c3p0.maxStatements=100
11.c3p0.numHelperThreads=10
12.c3p0.maxIdleTime=600
13.c3p0.initialPoolSize=3

3、配置spring,添加ibatis支持。  
修改applicationContext.xml文件,添加ibatis支持。  
applicationContext.xml文件代码如下:

01.<?xml version="1.0" encoding="UTF-8"?>
02.<beans xmlns="http://www.springframework.org/schema/beans"
03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
04. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
05. xmlns:context="http://www.springframework.org/schema/context"
06. xsi:schemaLocation="
07. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
08. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
09. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
10. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
11. ">
12.
13. <bean id="placeholderConfig"
14. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
15. <property name="location">
16. <value>classpath:jdbc.oracle.properties</value>
17. </property>
18. </bean>
19.
20. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
21. destroy-method="close">
22. <property name="jdbcUrl" value="${ibatis.connection.url}" />
23. <property name="driverClass" value="${ibatis.connection.driver_class}" />
24. <property name="user" value="${ibatis.connection.username}" />
25. <property name="password" value="${ibatis.connection.password}" />
26. <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
27. <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
28. <property name="minPoolSize" value="${c3p0.minPoolSize}" />
29. <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
30. <property name="maxStatements" value="${c3p0.maxStatements}" />
31. <property name="numHelperThreads" value="${c3p0.numHelperThreads}" />
32. <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
33. </bean>
34.
35. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
36. <property name="configLocation" value="classpath:sqlMapConfigMybatis.xml" />
37. <property name="dataSource" ref="dataSource" />
38. </bean>
39.
40. <bean id="abstractDao" abstract="true">
41. <property name="sqlSessionFactory" ref="sqlSessionFactory" />
42. </bean>
43.
44. <bean id="userDao"
45. class="com.hsinghsu.testSSI.dao.impl.UserDaoImpl"
46. parent="abstractDao" />
47.
48. <context:component-scan base-package="com.hsinghsu.testSSI">
49. <context:exclude-filter type="annotation"
50. expression="org.springframework.stereotype.Controller" />
51. </context:component-scan>
52.
53.</beans>

4、配置ibatis映射文件  
新建sqlMapConfigMybatis.xml,添加ibatis映射文件  
代码如下:

01.<?xml version="1.0" encoding="UTF-8"?>
02.<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
03. "http://mybatis.org/dtd/mybatis-3-config.dtd">
04.
05.<configuration>
06. <mappers>
07. <!-- 配置sql语句文件 -->
08. <mapper resource="com/hsinghsu/testSSI/data/User.xml" />
09. </mappers>
10.</configuration>

5、创建持久层实体类。  
创建包com.hsinghsu.testSSI.model,创建User类,添加5个私有成员,对应数据表中5个属性,并一定要添加set和get方法。  
User.java文件代码如下:

01.package com.hsinghsu.testSSI.model;
02.
03.public class User {
04.
05. private Long id;
06. private String name;
07. private String pwd;
08. private Long age;
09. private Long sex;
10.
11. public Long getId() {
12. return id;
13. }
14.
15. public void setId(Long id) {
16. this.id = id;
17. }
18.
19. public String getName() {
20. return name;
21. }
22.
23. public void setName(String name) {
24. this.name = name;
25. }
26.
27. public String getPwd() {
28. return pwd;
29. }
30.
31. public void setPwd(String pwd) {
32. this.pwd = pwd;
33. }
34.
35. public Long getAge() {
36. return age;
37. }
38.
39. public void setAge(Long age) {
40. this.age = age;
41. }
42.
43. public Long getSex() {
44. return sex;
45. }
46.
47. public void setSex(Long sex) {
48. this.sex = sex;
49. }
50.
51.}

6、配置User映射文件  
创建包com.hsinghsu.testSSI.data。该包主要放置对应类的映射文件。  
新建User.xml,添加其sql的映射  
代码如下:

01.<?xml version="1.0" encoding="UTF-8"?>
02.<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
03. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
04.
05.<mapper namespace="UserMapper">
06.
07. <!-- select 语句,传参一个,返回User对象 。注:select id as id,name as name,pwd as pwd
08. 的as后面的名称要与User类中属性名称要一一对应 -->
09. <select id="getUserByName" parameterType="String"
10. resultType="com.hsinghsu.testSSI.model.User">
11. select
12. id as id,name as name,pwd as pwd
13. from T_TEST_USER
14. WHERE NAME = #{name}
15. </select>
16.
17. <insert id="insertUser" parameterType="com.hsinghsu.testSSI.model.User">
18. insert into
19. T_TEST_USER(ID,NAME,PWD,AGE,SEX)
20. values(#{id},#{name},#{pwd},#{age},#{sex})
21. </insert>
22.
23.</mapper>

五、编写java代码  
1、编写DAO接口  
新建包com.hsinghsu.testSSI.dao,创建接口UserDao。  
UserDao.java文件代码如下:

01.package com.hsinghsu.testSSI.dao;
02.
03.import com.hsinghsu.testSSI.model.User;
04.
05.public interface UserDao {
06.
07. public User getUserByName(String name);
08.
09.}

2、编写DAO实现  
新建包com.hsinghsu.testSSI.dao.impl,创建实现类UserDaoImpl。  
UserDaoImpl.java文件代码如下:

01.package com.hsinghsu.testSSI.dao.impl;
02.
03.import java.util.ArrayList;
04.import java.util.HashMap;
05.import java.util.List;
06.import java.util.Map;
07.
08.import org.mybatis.spring.support.SqlSessionDaoSupport;
09.import org.springframework.stereotype.Repository;
10.
11.import com.hsinghsu.testSSI.dao.UserDao;
12.import com.hsinghsu.testSSI.model.User;
13.
14.@Repository(value = "userDao")
15.public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
16.
17. @Override
18. public User getUserByName(String name) {
19.
20. User user = new User();
21.
22. // select语句,传入一个参数,返回User对象 -------------------------------------------------------------------------
23. user = getSqlSession().selectOne("UserMapper.getUserByName", name);// select语句,传入一个参数,返回User对象
24.
25. //insert语句,传入一个对象 -------------------------------------------------------------------------------------
26. User oneUser = new User();
27. oneUser.setId(Long.parseLong("6"));
28. oneUser.setName("go07");
29. oneUser.setPwd("pesd07");
30. oneUser.setAge(Long.parseLong("25"));
31. oneUser.setSex(Long.parseLong("1"));
32. //int result = getSqlSession().insert("UserMapper.insertUser",oneUser);//insert语句,传入一个对象
33. //System.out.println("insert result:"+result);
34.
35.
36. return user;
37. }
38.
39.}

3、修改action类  
编辑修改LoginAction类。  
LoginAction.java文件代码如下:

01.package com.hsinghsu.testSSI.action;
02.
03.import org.springframework.beans.factory.annotation.Autowired;
04.
05.import com.hsinghsu.testSSI.dao.UserDao;
06.import com.hsinghsu.testSSI.model.User;
07.
08.public class LoginAction extends BaseAction {
09.
10. /**
11. *
12. */
13. private static final long serialVersionUID = -439437585357651788L;
14.
15. @Autowired
16. private UserDao userDao;
17.
18. private User user;
19.
20. private String username;
21. private String password;
22.
23. public String execute() throws Exception {
24. user = userDao.getUserByName(username);
25. if (user != null) {
26. if (user.getPwd().equals(password)) {
27. return SUCCESS;
28. }
29. }
30. return ERROR;
31. }
32.
33. public String getUsername() {
34. return username;
35. }
36.
37. public void setUsername(String username) {
38. this.username = username;
39. }
40.
41. public String getPassword() {
42. return password;
43. }
44.
45. public void setPassword(String password) {
46. this.password = password;
47. }
48.
49.}

4、新建用户登录页面。  
添加login.jsp。  
login.jsp文件代码如下:

01.<%@ page language="java" pageEncoding="UTF-8"%>
02.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
03.<html>
04.<head>
05.<title>Insert title here</title>
06.</head>
07.<body>
08. <form action="mylogin.action" method="post">
09. Username:<input type="text" name="username"/><br/>
10. Password:<input type="password" name="password"/><br/>
11. <input type="submit" value="Submit"/>
12. </form>
13.</body>
14.</html>

5、修改struts.xml配置文件  
struts.xml文件代码如下:

01.<?xml version="1.0" encoding="UTF-8" ?>
02.
03.<!DOCTYPE struts PUBLIC
04. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
05. "http://struts.apache.org/dtds/struts-2.3.dtd">
06.
07.<struts>
08. <constant name="struts.objectFactory" value="spring" />
09. <constant name="struts.i18n.encoding" value="UTF-8" />
10. <constant name="struts.i18n.reload" value="false" />
11. <constant name="struts.configuration.xml.reload" value="false" />
12. <constant name="struts.custom.i18n.resources" value="globalMessages" />
13. <constant name="struts.action.extension" value="action,," />
14.
15. <constant name="struts.convention.package.locators.basePackage"
16. value="com.hsinghsu.testSSI.action" />
17. <constant name="struts.convention.result.path" value="/" />
18. <constant name="struts.serve.static" value="true" />
19. <constant name="struts.serve.static.browserCache" value="false" />
20.
21.
22. <package name="com.hsinghsu.testSSI.action.test" extends="struts-default">
23. <action name="login" class="com.hsinghsu.testSSI.action.LoginAction">
24. <result name="success">/jsp/welcome.jsp</result>
25. </action>
26.
27. <action name="mylogin" class="com.hsinghsu.testSSI.action.LoginAction">
28. <result name="success">/jsp/welcome.jsp</result>
29. <result name="error">/jsp/login.jsp</result>
30. </action>
31. </package>
32.
33.</struts>

6、运行tomcat,在浏览器中输入http://localhost:8686/testSSI/jsp/login.jsp 会显示登录页面,如果成功会显示welcome 。失败则会继续要求登录。  
  
注:i.文件结构为:/src/main/resources,src/main/java,并将其添加到build path中。【Java Build Path - Add Folder】  
ii./src/main/resources下文件有:struts.xml、applicationContext.xml、jdbc.oracle.properties、sqlMapConfigMybatis.xml  
src/main/java下包结构为:com.hsinghsu.testSSI.model、com.hsinghsu.testSSI.dao、com.hsinghsu.testSSI.dao.impl、com.hsinghsu.testSSI.data、com.hsinghsu.testSSI.action。  
iii.修改web的输出目录,Java Build Path - Default output folder:testSSI/WebContent/WEB-INF/classes。  
iv.添加jar包时将jar包放在WebContent/WEB-INF/lib文件夹下。

手动搭建SSI框架的更多相关文章

  1. ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架

    1.导言 随着Web技术的发展,现在各种框架,前端的,后端的,数不胜数.全栈工程师的压力越来越大. PC端,pad端,移动端App(安卓/IOS)的发展,使得前后端一体的开发模式十分笨重.因此,前后端 ...

  2. 手动搭建express框架

    创建相应的文件夹 在根路径下创建package.json文件并在命令面板里安装相应的模块包(如下) 2.  在根路径下创建app.js, 在根路径下创建routes文件夹,并在文件夹中创建index. ...

  3. ABP架构学习系列三:手工搭建ABP框架

    由于公司的项目才接触到ABP这个框架,当时就觉得高大上,什么IOC.AOP.ddd各种专业词汇让人激情 澎湃,但在使用过程中碰到了许多坑,可能也许是没有去看源码导致的,但工作确实没有那么多时间让人去慢 ...

  4. ssi框架搭建

    Struts2主要来源于webwork框架,与Struts1相比,在数据传递方面,Struts2提供了更加强大OGNL标签功能,使其能够通过在action中定义变量来直接与jsp页面中的数据进行相互传 ...

  5. SSM框架手动搭建

    SSM框架手动搭建 创建web项目 IDEA创建Maven项目 [File]-->[new]-->[project..] 将项目变为web项目 [File]-->[Project S ...

  6. 手动搭建I/O网络通信框架2:Socket和ServerSocket入门实战,实现单聊

    第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 在第一章中运用Socket和ServerSocket简单的实现了网络通信.这一章,利用BIO编程模型进行 ...

  7. 手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊

    资料:慕课网 第二章:手动搭建I/O网络通信框架2:Socket和ServerSocket入门实战,实现单聊 这个基础项目会作为BIO.NIO.AIO的一个前提,后面会有数篇博客会基于这个小项目利用B ...

  8. 手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室

    第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊 在第二章中用BIO编程模型,简单的实现了一 ...

  9. 手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造

    第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊 第三章:手动搭建I/O网络通信框架3:NI ...

随机推荐

  1. hdu 3333 Turing Tree(线段树+离散化)

    刚看到是3xian大牛的题就让我菊花一紧,觉着这题肯定各种高端大气上档次,结果果然没让我失望. 刚开始我以为是一个普通的线段树区间求和,然后啪啪啪代码敲完测试没通过,才注意到这个求和是要去掉相同的值的 ...

  2. [基础]RHEL6下LINUX服务器批量部署

      包准备:xinetd,tftp-server,dhcp,httpd,system-config-kickstart,syslinux,nfs   试验环境: 本机地址:192.168.46.98 ...

  3. ios-王云鹤 把UIdatePicker 嵌入到 UIActionSheet中

    这里简单的解释一下: -(void) setUpDatePicker方法用于调用UIDatePicker -(void) DatePickerDoneClick:(id) sender方法用于实现隐藏 ...

  4. Js-Html 前端系列--checkbox

    今天搞全选按钮,设置Checkbox的时候,处于Checked状态但是不显示勾.最后得出解决方案: var c = boxcList.eq(i).attr("checked"); ...

  5. OC之方法的声明实现和调用

    1. 类是来描述一群具有相同特征和行为的事物的. 类还有行为. 类的声明 @interface 类名 : NSObject { 属性. } 方法的声明 @end 类的实现. @implementati ...

  6. STM32 Keil查看程序占用ROM和RAM

    1. 编译生成的map文件中code , RO ,RW, ZI 表示内容 Code为程序代码部分 RO-data 表示 程序定义的常量const temp; RW-data 表示 已初始化的全局变量 ...

  7. Java 并发 线程同步

    Java 并发 线程同步 @author ixenos 同步 1.异步线程本身包含了执行时需要的数据和方法,不需要外部提供的资源和方法,在执行时也不关心与其并发执行的其他线程的状态和行为 2.然而,大 ...

  8. html5的navigator调用手机震动

    navigator.vibrate(s) 或 navigator.webkitVibrate(s),不过该属性只在安卓系统有效.

  9. C++类继承中,基类/当前对象属性/当前对象的构造顺序

    [1]中提到,规范的派生类构造函数三个要点: 首先创建基类对象 应通过成员初始化列表,创建基类对象 应该初始化本派生类新增的成员变量 那在构造派生类实例的过程中,其基类(以及多继承的时候多个基类)/当 ...

  10. PHP基础语法思维导图