【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录

搭建struts2是重点,搭建这个框架有些麻烦,遇到不少的问题,终于一一解决,写在此处,以作备忘。

1.  首先要下载struts2的一些组件,我下载的版本是struts-2.3.28.1,MyEclipse是Version: 2014版本的。由于版本的不断升级,导致在搭建的过程中,和过去相对较旧的版本搭建有了一些差别,不过问题不是很大。这里是下载的struts2的地址:http://struts.apache.org/download.cgi#struts25

2.  解压下载的组件我们可以看到这样的目录,

【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录_第1张图片

apps中是struts2自带的例子,docs是struts2的参考文档,lib是struts2所有的组件jar包,src是struts2的源代码。我们打开apps解压struts2-blank.war,在解压的struts2-blank\WEB-INF\lib文件中找到以下组件,

【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录_第2张图片

另外由于我们需要连接数据库所以找一个连接mysql的jar,我这里用的是mysql-connector-java-5.1.13-bin.jar,新建一个web项目,将这些组件复制到建立的web工程下的WEB-INF/lib目录中,这些组件其实就是编译好的类文件。

3.  配置web.xml文件,这也是很关键的一步,在启动服务器时,服务器要根据这个文件去进行初始化。而struts2和struts1启动有很大的不同,它是通过过滤器来启动的,而struts1是通过加载servlet来启动的,故web.xml的配置内容如下。



  Struts Blank
  
    struts2
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  
  
    struts2
    /*
  
  
    login.jsp
  

4.  接下来就是配置struts.xml文件。这个文件就好像起着一个过滤器的作用,用户发来的请求要经过该文件的过滤,根据用户请求中所请求的处理类型,来选择相应的处理逻辑。我们这里的struts.xml文件配置如下:






	
		
			/error.jsp
			/welcome.jsp
		
		
			/error.jsp
			/welcome.jsp
		
	
	

在struts.xml中,是采用package来管理各种action的。package标签中的namespace指定了该包的命名空间。extends是说当前这个包继承自struts-default包,可以在struts2-core-2.3.28.1.jar中的struts-default.xml文件中找到这个包,这个包被定义成抽象的,它不能包含有action。包中的每一个action标签都和一个逻辑处理类进行了映射,name指定了这个action的名字,和包的namespace组合起来,可以直接访问这个逻辑处理类。class指定了逻辑处理类的位置,method指定了进行逻辑处理类中进行逻辑处理的方法,这个execute很重要,而且它有固定的返回类型,就是String。result标签就是根据逻辑判断之后,execute方法返回的字符串,根据返回的字符串,来进入到指定的页面。这里一定要把跳转的地址写清楚,明白。否则浏览器会报404的错误。

5. 根据struts.xml的配置, 我们需要在WebRoot目录下建立四个jsp页面分别为regist.jsp, login.jsp, welcome.jsp和error.jsp。在src目录下建立两个java类文件Dao.java和UserAction.java。其中需要注意UserAction继承自ActionSupport这个类。

项目的目录结构为:

【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录_第3张图片

它们的源码为:

regist.jsp:

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



  
    
    
    My JSP 'regist.jsp' starting page
    
	
	
	    
	
	
	

  
  
  
  
	

用户注册

username:
password:

login.jsp:

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



  
    
    
    My JSP 'login.jsp' starting page
    
	
	
	    
	
	
	

  
  
  
  
   

用户登录

用户名:
密码:

welcome.jsp:

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



  
    
    
    My JSP 'index.jsp' starting page
	
	
	    
	
	
	
  
  
  
    	您已经执行成功! 

error.jsp:

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



  
    
    
    My JSP 'error.jsp' starting page
    
	
	
	    
	
	
	

  
  
  
    	执行失败!! 

Dao.java:

package com.struts2_test.dao;

import java.sql.*;
public class Dao {

	Connection con = null;
	Statement stat = null;
	ResultSet rs = null;
	
	public Dao() {
		try {
		Class.forName("com.mysql.jdbc.Driver");
		con = DriverManager.getConnection("jdbc:mysql://localhost:3306/struts2_test","root","root");
		stat = con.createStatement();
		} catch (Exception e) {
		// TODO: handle exception
		con = null;
		}
	}
	
	public ResultSet executeQuery(String sql) {
		try {
		rs = stat.executeQuery(sql);
		} catch (Exception e) {
		// TODO: handle exception
		rs = null;
		}
		return rs;
	}
	
	public int executeUpdate(String sql) {
		try {
		stat.executeUpdate(sql);
		return 0;
		} catch (Exception e) {
		// TODO: handle exception
		}
		return -1;
	}

}

UserAction.java:

package com.struts2_test.action;

import com.opensymphony.xwork2.ActionSupport;
import com.struts2_test.dao.Dao;

import java.sql.*;

public class UserAction extends ActionSupport {

	private Dao dao = new Dao();
	private String username;
	private String password;
	
	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 String login() {
		String sql = "select * from tb_user where t_userName='" + getUsername()+"' and t_userPassword ='"+getPassword()+"'";
		ResultSet rS = dao.executeQuery(sql);
		try {
			if (rS.next()) {
			return "loginin";
			}
			return "loginout";
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "loginout";
		}
	}
	
	public String regist() {
		String sql = "insert into tb_user(t_userName,t_userPassword,t_isCheck) values('"+getUsername()+"','"+getPassword()+"','0')";
		int i = dao.executeUpdate(sql);
		if (i > -1) {
		return "success";
		}
		return "error";
	}
}

最后看一下我们数据库struts2_test:

 【J2EE核心开发学习笔记 010】struts2的搭建及连接数据库实现用户注册与登录_第4张图片

经过这几步后,启动你的服务器,在地址栏输入登录界面的地址,一个简单的struts2框架就搭建好了。

 csdn下载:http://download.csdn.net/detail/davebobo/9533847


 

 

 

 

你可能感兴趣的:(J2EE,Java,Android编程实战)