教程流程是重点,应熟练掌握。本教程做简单的账号注册演示,所用工具:Myeclipse-6.5、Struts-2.2.3、Hibernate-3.2、Spring-2.0、MySql,本教程出自北大青鸟成都成都校区,转载请注明原处,谢谢。
一、利用工具快速搭建环境
1、新建一个名为ssh2的Web项目。
Folder一定要写成 WebRoot/WEB-INF,否则容易找不到
不用它创建,然后点完成。
二、编写代码实现功能,处理常见异常
1、在 com.lingdus.bean 包下创建 Users.java 类
package com.lingdus.bean;
import java.io.Serializable;
public class Users implements Serializable {
private int id;
private String username;
private String password;
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;
}
}
2、在 com.lingdus.bean 包下创建一个 Users.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.lingdus.bean.Users" table="scbdqn_users">
<id name="id" column="id" type="int">
<generator class="increment"></generator>
</id>
<property name="username" column="username" type="string"></property>
<property name="password" column="password" type="string"></property>
</class>
</hibernate-mapping>
3、在 com.lingdus.dao 下创建一个 UserDAO.java 文件
package com.lingdus.dao;
import com.lingdus.bean.Users;
public interface UserDAO {
public void doRegister(Users user);
}
4、在 com.lingdus.dao.impl 下创建一个 UserDAOImpl.java 文件
package com.lingdus.dao.impl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.lingdus.bean.Users;
import com.lingdus.dao.UserDAO;
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
public void doRegister(Users user) {
this.getHibernateTemplate().save(user);
}
}
5、在 com.lingdus.service 下创建一个 UserService.java 文件
package com.lingdus.service;
import com.lingdus.bean.Users;
public interface UserService {
public void doRegister(Users user);
}
6、在 com.lingdus.service.impl 下创建一个 UserServiceImpl.java 文件
package com.lingdus.service.impl;
import com.lingdus.bean.Users;
import com.lingdus.dao.UserDAO;
import com.lingdus.service.UserService;
public class UserServiceImpl implements UserService {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public void doRegister(Users user) {
this.userDAO.doRegister(user);
}
}
7、在 com.lingdus.action 下创建一个 UserRegisterAction.java 文件
package com.lingdus.action;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import com.lingdus.bean.Users;
import com.lingdus.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserRegisterAction extends ActionSupport {
private UserService service;
private Users user;
public UserService getService() {
return service;
}
public void setService(UserService service) {
this.service = service;
}
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
@Override
public String execute() throws Exception {
this.service.doRegister(this.user);
if (0 == this.user.getId()) {
return ERROR;
}
return SUCCESS;
}
}
8、在 WebRoot\WEB-INF\applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:sqlserver://localhost:1433;databaseName=ssh2</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>sql2008</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>com/lingdus/bean/Users.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
<bean id="userDAO" class="com.lingdus.dao.impl.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="userService"
class="com.lingdus.service.impl.UserServiceImpl">
<property name="userDAO" ref="userDAO"></property>
</bean>
<bean id="springUserRegisterAction"
class="com.lingdus.action.UserRegisterAction">
<property name="service" ref="userService"></property>
</bean>
</beans>
9、在 src 目录下创建一个 struts.xml 文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="ssh2" extends="struts-default">
<action name="doRegister" class="springUserRegisterAction">
<result name="success">ok.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>
10、在 WebRoot\WEB-INF\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>ssh2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>ssh2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
11、创建 ssh2 数据库 Users 表,字段id(int,仅设置主键)、username(varchar(255))、password(varchar(255))
12、删除lib目录下的 asm-2.2.3.jar、asm-3.1.jar 文件。
13、编写 index.jsp 文件,具体如下
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<form action="doRegister.action" method="post">
账号:
<input type="text" name="user.username" />
<br />
密码:
<input type="password" name="user.passoword" />
<br />
<input type="submit" value="注册" />
</form>
</body>
</html>
14、搭建 Tomcat 并启动,看样子问题不大,教程就此结束。
2011-12-19 15:56:14 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\MyEclipse 6.5\bin;D:\java resource\apache-tomcat-6.0.33\bin
2011-12-19 15:56:14 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2011-12-19 15:56:14 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1123 ms
2011-12-19 15:56:14 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2011-12-19 15:56:14 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.33
2011-12-19 15:56:15 org.apache.catalina.startup.HostConfig deployDescriptor
信息: Deploying configuration descriptor host-manager.xml
2011-12-19 15:56:15 org.apache.catalina.startup.HostConfig deployDescriptor
信息: Deploying configuration descriptor manager.xml
2011-12-19 15:56:15 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory docs
2011-12-19 15:56:15 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory examples
2011-12-19 15:56:15 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2011-12-19 15:56:15 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2011-12-19 15:56:16 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory ROOT
2011-12-19 15:56:16 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory ssh2
log4j:WARN No appenders could be found for logger (org.springframework.util.ClassUtils).
log4j:WARN Please initialize the log4j system properly.
2011-12-19 15:56:17 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
2011-12-19 15:56:27 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2011-12-19 15:56:28 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2011-12-19 15:56:28 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/47 config=null
2011-12-19 15:56:28 org.apache.catalina.startup.Catalina start
信息: Server startup in 13407 ms