struts2简单登录例子

1、建立javaWeb工程struts2test1

2、导入struts2的9个基本jar包,建立path

3、在WebRoot>WEB-INF下新建web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <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>
</web-app>

4、在src>bean包下建立UserTable.java

package bean;

public class UserTable {
	private int id;
	private String account;
	private String password;
	@Override
	public String toString() {
		return "UserTable [id=" + id + ", account=" + account + ", password=" + password + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getAccount() {
		return account;
	}
	public void setAccount(String account) {
		this.account = account;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

5、在src>util包下建立数据库工具包DBUtil.java

package util;
import java.sql.*;

public class DBUtil { 
	static String url="jdbc:mysql://localhost:3306/mydb?useSSL=false";
	static String user="root";
	static String password="root123";
	
	static Connection conn=null;
	PreparedStatement ps=null;
	ResultSet rs=null;

	static{
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static Connection getConnection(){
		try {
			conn=DriverManager.getConnection(url,user,password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
	public static void close(ResultSet rs,PreparedStatement ps,Connection conn){
		try{
			if(rs!=null)
				rs.close();
			if(ps!=null)
				ps.close();
			if(conn!=null)
				conn.close();
		}catch(java.sql.SQLException e){
			e.printStackTrace();
		}
	}
}

6、在WebRoot下建立login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>struts login</title>
  </head>
  
  <body>
    <s:form action="main" method="post"> <!-- 打印错误信息不能有theme="simple"属性 -->
    	<table>
    		<caption>User Login</caption>
	    	<tr>
	    		<td>
	    			<s:textfield name="user.account" label="Account" size="20"></s:textfield>
	    		</td>
	    	</tr>
	    	<tr>
	    		<td>
	    			<s:password name="user.password" label="Password" size="21"></s:password>
	    		</td>
	    	</tr>
	    	<tr>
	    		<td>
	    			<s:reset value="reset"/>
	    			<s:submit value="submit"/> 
	    		</td>
	    	</tr>
    	</table>
    </s:form>
  </body>
</html>

7、在WebRoot下建立success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>success</title> 
  </head>
  
  <body>
    <s:set name="user" value="#session['user']"/>
    <s:property value="#user.account"/>,您好!欢迎登录。
  </body>
</html>

8、在WebRoot下建立error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>error</title>
  </head> 
  <body>
    <h2 style="text-align:center;margin-top:100px">Error Login</h2>
  </body>
</html>

9、在src>action包下建立MainAction.java

package action;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import bean.UserTable;

public class MainAction extends ActionSupport{
	private UserTable user;
	
	public String execute() throws Exception{
		String account=user.getAccount();
		String password=user.getPassword();
		System.out.println(account);
		System.out.println(password);
		boolean flag=false;
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		conn=util.DBUtil.getConnection();
		System.out.println(conn);
		String sql="select * from loginusers";
		
		UserTable user2=null;
		ActionContext context=ActionContext.getContext();
		Map session=context.getSession();
		user2=(UserTable)session.get("user");
		
		if(user2==null){
			try{
				ps=conn.prepareStatement(sql);
				rs=ps.executeQuery();
				while(rs.next()){
					if(account.equals(rs.getString("userName"))&&password.equals(rs.getString("password"))){
						user2=new UserTable();
						user2.setId(rs.getInt(1));
						user2.setAccount(rs.getString(2));
						user2.setPassword(rs.getString(3));
						session.put("user",user2);
						flag=true;
					}					
				}
			}catch(SQLException e){
				e.printStackTrace();
			}finally{
				util.DBUtil.close(rs, ps, conn);
			}
		}else{
			flag=true;
		}
		if(flag)
			return SUCCESS;
		else
			return ERROR;
	}

	public UserTable getUser() {
		return user;
	}
	public void setUser(UserTable user) {
		this.user = user;
	}
}

10、在src下新建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" extends="struts-default">
			<!-- 用户登录action -->
			<action name="main" class="action.MainAction">
				<result name="success">/success.jsp</result>
				<result name="error">/error.jsp</result>
			</action>
		</package>
		<!-- <constant name="struts.i18n.encoding" value="gb2312"></constant> -->
	</struts>

11、保存启动Tomcat,在浏览器输入http://localhost:8080/struts2test1/login.jsp

登录失败

登录成功

注意:已经保存了用户的session对象,登录成功后不需再登录,要先进行失败登录测试

猜你喜欢

转载自blog.csdn.net/zero_130/article/details/81157831