struts2简单入门demo-struts2环境搭建

        这学期开始学习框架了,老师讲的很快,东西基本都靠自己摸索。写了几个简单的struts2的小项目,对它简单的应用已经有一定了解了。

平时写的时候都很随便,没有很好的分层,一般就Action,Service,Dao,没有做到很好的解耦。

        最近看了一些好的例子,学习了里面的分层结构,对于数据访问层和业务逻辑层都将接口和实现类分开了。

       越来越觉得接口是个好东西了,虽然设计接口很难,这是后话哈。

       下面进入正题:

/*@version 1.0*/

       本版本demo的功能就是简单的登录操作,成功则进入欢迎页面,失败则返回登录页面。

       这个登录功能会不断增加新的功能,希望以后能做成一个登录模版。


工程建构:

                  


简单流程:

1、建数据库

      本demo用到的表就一张user表:[id , username, password]。

 2、工程创建

      新建一个web工程,将struts2的核心架包拷入WEB-INF下的lib文件夹,修改web.xml中的配置信息,在src文件夹下创建struts.xml文件,这个文件可以在struts2的blank这个           Sample中看到。

       <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>
 
	<welcome-file-list>
		<welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>
	</welcome-file-list>

其中welcome-file-list是用于设置默认的主页


3、创建几个jsp页面

      这个里面要用到struts2的标签,当然此处用到的是最简单的。

       <div>
 		 <center>
    		<h1>欢迎登录</h1>
    			<s:form action="login" method="post" >
    			<s:textfield name="user.username" label="用户名"></s:textfield>
    			<s:password name="user.password" label="密 码"></s:password>
    			<tr>
    				<td><s:submit value="登录" theme="simple"></s:submit></td>
    				<td><s:reset value="重填" theme="simple"></s:reset></td>
    			</tr>
    			</s:form>
   		 </center>	
   	</div>

同时要声明使用struts2的标签:

<%@ taglib prefix="s" uri="/struts-tags" %>


欢迎界面的主要代码:
<font size="4">欢迎你:</font>
 	   
 	<font size="5"> ${currentUser.username }</font>


4、建包分层写代码

      一般我的顺序是 数据库连接工具类->bean->dao->daoImpl->service->serviceImpl->action->struts.xml中配置。

     完成工作的主要就daoImpl类和action类。

daoImp类:

/*数据访问层的实现类*/

public class UserDaoImpl implements UserDao{

	private static String findString = "select * from user where username=? and password=?";

	public User find(User user) throws Exception{
		
		User result = null;
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
	
		try {
			
			conn = DBUtil.getConnection();
			pstm = conn.prepareStatement(findString);
			pstm.setString(1, user.getUsername());
			pstm.setString(2, user.getPassword());
			
			rs = pstm.executeQuery();
			
			if(rs.next()){
				result = new User();
				result.setId(rs.getInt(1));
				result.setUsername(rs.getString(2));
				result.setPassword(rs.getString(3));
			}
			
		} catch (Exception e) {
			throw e;
		}finally{
			
			DBUtil.closeResultSet(rs);
			DBUtil.closePreparedStatement(pstm);
			DBUtil.closeConnection(conn);
			
		}
		
		return result;
		
	}
}


action类:

public class UserAction extends ActionSupport implements SessionAware{

	private User user;
	private UserService userService;
	//创建一个session,用于保存当前登录用户信息
	private Map<String, Object> session;
	
	public UserAction() {
		this.userService = new UserServiceImpl();
	}
	
	public String execute() throws Exception{
		return INPUT;
	}
	
	public String login() throws Exception{
		
		user = userService.login(user);
		if(user != null){
			//查询到结果则将user存入session中
			session.put("currentUser", user);
			return SUCCESS;
		}else{
			return INPUT;
		}
	}
       ......
}


    demo就简单介绍到这吧,刚学的同学可以学着自己实践一下,巧能补拙,我们一起加油吧。

   

   $demo下载地址:WebDemo1_1                             #CSDN@CSU-Max

   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值