struts2的简单学习体会

开始准备工具,我电脑上用的eclipse mars2 ,提前需要安装好tomcat8.0  以及mysql。下载好一个jdbc包(数据库连接用的)。新建Dynamic Web Project,(记得勾选创建web.xml)再导入struts2的组件,可以去struts2的官网下载,http://struts.apache.org/download.cgi这里有最新的Struts 2.5.12.all.但是里面并没有struts-blank-war 空模板文件。。。。于是往下找到2.3.32这个版本的,用2345好压打开,你需要这里的struts2-blank.war下面的东西

.

打开这个路径下struts2-blank.war\WEB-INF\lib里面的很多个jar包。复制到已建工程的wenContent/web-inf/lib下面,然后工程右键refresh一下。复杂点的就是add Library.新建一个Library,命名为Struts2,添加这些jar文件。作为库文件引用即可。再就是导入struts2的组件,复制struts2-blank.war\WEB-INF\src\java下的所有文件到工程src中(内含srtuts.xml),可以复制一些examlpe的jsp文件来使用。


下面就是来配置主要的struts.xml和web.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
<!--这里是我改动的地方,我的登录action叫login,类文件在loginAction包下的LoginAction.java -->       
        <action name="login" class="loginAction.LoginAction">
			<result name="error">/login/login.jsp</result>
			<result name="success">/login/success.jsp</result>
		</action>
        
    </package>

    <include file="example.xml"/>

    <!-- Add packages here -->

</struts>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ch04</display-name>
 <!--  这里是复制struts2-blank.war\WEB-INF\web.xml中的<filter>.....</filter><filter-mapping>....</filter-mapping> -->
    <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>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

剩下来就是login的login.jsp和success.jsp


login.jsp点击运行后,输入帐户名和密码匹配上了就通过action跳转到success.jsp否则还是跳回login.jsp。简单的匹配验证可以在action中。


但是为了效果。这里加上数据库连接验证部分。

那么匹配段需要jdbc,这是我用到的 mysql-connector-java-5.1.30-bin2,导入lib下编译一下就进去了。可在Web App library 查看.

下面开始业务层代码,即逻辑处理过程:直接上代码


package loginAction;
import com.opensymphony.xwork2.ActionContext;

import loginBean.LoginBean;

public class LoginAction {     //业务控制器
	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 execute()throws Exception{
		LoginBean lb=new LoginBean();
		if (lb.login(userName, passWord)) {
			//ActionContext.getContext().getSession().put("userName", getUserName());//保存值
			return "success";
		} else {
			return "error";
		}
	}
}

package loginBean;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;

public class Check {
	public boolean check(String a,String b){
	Connection connection = null; 
    String url = "jdbc:mysql://localhost:3306/struts2SQL"; 		//
    
    
    
		String username = "root"; 		
		String password = ""; 	//这样写有个好处,将来更改’用户名密码‘登陆 为了管理员留下余地
		//加载驱动程序以连接数据库 		
		try { 			
			Class.forName( "com.mysql.jdbc.Driver" ); 			
			connection = (Connection)DriverManager.getConnection( url, username, password ); 		
			} 				
		catch ( ClassNotFoundException cnfex ) { 			
			System.err.println(	"装载 JDBC/ODBC 驱动程序失败。" ); 			
			cnfex.printStackTrace(); 			
		//	System.exit( 1 ); 	
			} 				
		catch ( SQLException sqlex ) { 			
			System.err.println( "无法连接数据库" ); 			
			sqlex.printStackTrace(); 			
			System.exit( 1 ); 		
			} 		
		java.sql.Statement stat = null; //初始化	 
		ResultSet rs = null;  // 要执行的SQL语句 		
		
		String sql="select * from struts2 where userName='"+a+"'and passWord='"+b+"'";
		try{
			stat=connection.createStatement();
			rs = stat.executeQuery(sql);
			
			if(rs.next()){
				//匹配成功
				System.out.println("登陆用户:"+a+"密码:"+b+rs);
				return true;
				//返回登陆界面
				
			} else {
				System.out.println("查找为空");
		        return false;  
			}
		//rs.close(); 
	   //connection.close();
		}catch (SQLException e) {	
	 		  e.printStackTrace(); 	
	 			return false;
	 			
	 		  }
	
		
		
		     
	}
	public static void closeAll(){    ///定义关闭函数,在执行sql语句后调用关闭con
//		if(rs==null){
//			
//		}
//		if(rs!=null){
 
//			con.close();
//		}
	}
}
package loginBean;

import loginBean.Check;

public class LoginBean { // 业务逻辑组件
	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;
	}
	// private boolean LoginCheck(String a, String b) { //账户密码 的匹配
	// Check c=new Check();
	// c.check(a,b); //匹配账号密码。从c数据表
	// return true;
	//
	// }

	// 处理用户登录的方法
	public boolean login(String userName, String passWord) {
		boolean b = false;
		Check c = new Check();
	//	boolean bl=c.check(userName, passWord);
		if (c.check(userName, passWord)) { /*
											 * userName.equals("zgs") &&
											 * passWord.equals("123")
											 */
			b = true;
			return b;
		} else {
			b = false;
			return b;
		}
	}
}
逻辑关系是:form表单提交userName和passWord到action,交由LoginAction.java处理,LoginAction调用LoginBean的login()方法,而在LoginBean中又调用数据库的check()方法匹配数据正确与否。返回的boolean值,最终返回给

  <action name="login" class="loginAction.LoginAction">
<result name="error">/login/login.jsp</result>
<result name="success">/login/success.jsp</result>
</action>
        所有的过程就完成了。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值