开发工具:myEclipse8.5
jdk:1.5.06
数据库:MySQL
使用框架:Struts2.3.15、Spring3.1、mybatis*
服务器:tomcat
1.新建web工程
略
2.导入jar包(根据众大牛的教程,我导入了以下jar包)
3.编写代码
(1)实体类User
public class User {
private String id;
private String loginName;
private String displayName;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
(2)dao UserDao
public interface UserDao {
/* 登陆 */
public User login(User user);
/* 注册 */
public User register(User user);
/* 查询 */
public User getUserInfo(User user);
}
(3)bo接口UserBo
public interface UserBo {
/* 登陆 */
public User login(User user);
/* 注册 */
public User register(User user);
}
(4)bo实现类UserBoImpl
public class UserBoImpl implements UserBo {
/* 注入 */
private UserDao UserDao;
/* 登陆 */
public User User(User user) {
return UserDao.login(user);
}
/* 注册 */
public User register(User user) {
return UserDao.register(user);
}
public UserDao getUserDao() {
return UserDao;
}
public void setUserDao(UserDao UserDao) {
this.UserDao = UserDao;
}
public User login(User user) {
// TODO Auto-generated method stub
return null;
}
}
(5)action UserAction
public class UserAction {
private User user;
/* 注入 */
private UserBo UserBo;
/* 登陆 */
public String User() {
user = UserBo.login(user);
if (!user.getId().equals("0")) {
return "success";
} else {
return "input";
}
}
/* 注册 */
public String register() {
user = UserBo.register(user);
if (!user.getId().equals("0")) {// 注册成功
return "success";
} else {// 注册失败
return "registerInput";
}
}
public String login() {
System.out.println("hehe");
return "success";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public void setUserBo(UserBo UserBo) {
this.UserBo = UserBo;
}
public UserBo getUserBo() {
return UserBo;
}
}
4.配置数据源:
jdbc.url=jdbc\:mysql\://localhost\:3306\:dms
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=root
5.配置Spring
<?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.0.xsd">
<!--配置数据源属性文件引入sqlServer.properties -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>WEB-INF/sqlServer.properties</value>
</property>
</bean>
<!--配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driver}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<!--创建sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="WEB-INF/mybatis_config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"
scope="prototype">
<property name="mapperInterface" value="baomi.user.dao.UserDao" />
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<bean id="userBo" class="baomi.user.bo.impl.UserBoImpl" scope="prototype">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userAction" class="baomi.user.action.UserAction" scope="prototype">
<property name="userBo" ref="userBo"></property>
</bean>
</beans>
6.配置Struts
<?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="default" namespace="/" extends="struts-default">
<action name="register" class="userAction">
<result name="success">/jsp/Login.jsp</result>
</action>
<action name="userAction_*" class="userAction" method="{1}" ><!--这里用的是通配符,在页面使用的时候直接使用userAction_login;不使用通配符时使用userAction!login.action-->
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
7.配置mybatis
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="user" type="yikui.pan.user.entity.User" />
</typeAliases>
<mappers>
<mapper resource="UserMapper.xml" />
</mappers>
</configuration>
mybatis还需要mapper文件,也就是具体的那个sql文件(至少我是这么理解的)
8.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">
<!-- struts2的配置文件 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<!-- org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring的配置路径 ,必须-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<!-- spring的配置路径 ,必须 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
9.jsp页面
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>
Register.jsp
</title>
</head>
<body>
<h1>Register</h1>
<hr>
<s:form action="userAction_login"><!--这里注意-->
<s:textfield name="username" key="username"/>
<s:textfield name="password" key="password"/>
<s:submit/>
</s:form>
</body>
</html>
10.结果
11.总代码结构
大功告成。
在搭建的过程中遇到的错误:
1.There is no Action mapped for namespace / and action name
解决办法:
一、struts.xml文件错误。这种错误又分为以下几种:1,struts.xml文件名错误。一定要注意拼写问题;2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;3,struts.xml文件内容错误。下面给出一个正确的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="default" namespace="/" extends="struts-default">
<action name="login" class="com.wanggc.struts2.sample.Struts2Action">
<result name="success">/jsp/result.jsp</result>
</action>
</package>
</struts>
二、如果排除了struts.xml文件的问题,还有一种可能就是,在web.xml文件中的<welcome-file>信息中是否配置了自己工程的启动页面。如果没有配置,地址栏中要输入完成的url,如:http://localhost:8080/Struts2Sample/jsp/login.jsp,后面的资源详细信息不输入的时候也会报这个错误,我就是栽在这个问题上的(^_^)。