Struts2+mysql登录验证实例
来源:互联网 发布:淘宝假货率 编辑:程序博客网 时间:2024/06/14 15:06
文件结构如下:
- controller为控制层:jsp传过来的值action负责处理(execute方法)并返回字符串实现页面跳转。
- business为业务层:被action调用实现业务逻辑。
- dao为数据访问层,主要负责数据的CUID操作。
接下来开始从JSP+struts+mysql实现登录操作。
- 建立login.jsp:
<%@ page language="java" pageEncoding="UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><title>请登录</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <h1> 请输入 </h1> <s:form action = "login" method = "post" > <s:textfield key = "username"></s:textfield> <s:password key = "password"></s:password> <s:submit value = "登录"></s:submit> </s:form></body></html>
- 建立main.jsp为登录成功跳转的页面:
<%@ page language="java" pageEncoding="UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><title>主页面</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <h1> <s:property value = "username"/>你登录了主页面 </h1></body></html>
- error.jsp为没能登陆跳转的页面:
<%@ page language="java" pageEncoding="UTF-8" %><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><title>错误</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body> <h1> 你没能登录,这是错误页面。 </h1></body></html>
页面已经创建好了,接下来action处理页面传来的数据,创建LoginAction:
package controller;import java.util.ArrayList;import business.LoginHandler;import com.opensymphony.xwork2.ActionSupport;/**@author:micro_hz2015年8月12日 */public class LoginAction extends ActionSupport{ String username; 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; } @Override public String execute() throws Exception { // TODO Auto-generated method stub ArrayList<String> userList = new ArrayList<String>(); userList.add(username); userList.add(password); LoginHandler login = new LoginHandler(); boolean mark = login.checkLogin(userList); if(mark) return SUCCESS; else return ERROR; }}
- 其中调用业务逻辑LoginHandler完成用户的验证:
package business;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.Set;import dao.Dao;/**@author:micro_hz2015年8月12日 */public class LoginHandler { public boolean checkLogin(ArrayList list) { String user = (String)list.get(0); String password = (String)list.get(1); boolean rt = false; try { Dao dao = new Dao(); Connection conn = dao.getConnection(); PreparedStatement p = conn.prepareStatement("select * from test"); ResultSet rs = p.executeQuery(); HashMap<String,String> hm = new HashMap(); while(rs.next()) { hm.put(rs.getString("username"), rs.getString("password")); } dao.close(rs, p, conn); Set<String> set = hm.keySet(); Iterator it = set.iterator(); while(it.hasNext()) { if(it.next().equals(user)) { if(password.equals(hm.get(user))) { rt = true; break; } } } } catch(SQLException e) { System.out.println("数据库出问题"); } return rt; }}
然后是struts.xml配置LoginAction与返回后页面跳转:
<?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> <package name="struts" extends="struts-default"> <action name="login" class="controller.LoginAction"> <result name="success">/main.jsp</result> <result name="error">/error.jsp</result> </action> </package></struts>
- web.xml配置拦截器和初始页面:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <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>login.jsp</welcome-file> </welcome-file-list></web-app>
- 数据访问层:
package dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.text.html.HTMLDocument.HTMLReader.PreAction;/**@author:micro_hz2015年8月12日 */public class Dao { public Connection getConnection() { String url = "jdbc:mysql://localhost:3306/micro"; String username = "root"; String password = "root"; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, username, password); } catch(ClassNotFoundException e) { System.out.println("驱动加载出错"); } catch(SQLException e) { System.out.println("数据库连接出错"); } return conn; } public void close(ResultSet rs,PreparedStatement p,Connection conn) { try { rs.close(); p.close(); conn.close(); } catch(SQLException e) { System.out.println("数据库关闭出错"); } }}
建立的micro数据库,表为test,结构如下:
需要的jar包:
PS:之前一直报告Dispatcher not inistailled,后来将jar包删除(除mysql-java-connector.jar外)重新导入了\struts-2.3.24\apps下struts-blank里面示例的jar包成功解决问题。
jsp中使用struts的taglib配置
<%@ taglib prefix="s" uri="/struts-tags" %>
顺序不能颠倒,否则无效。
0 0
- Struts2+mysql登录验证实例
- struts2登录验证码
- struts2登录验证
- 使用struts2+MySQL做简单的登录验证
- (复习)Struts2+MySQL完成登录和验证(一)
- Struts2 登录实例
- struts2表单验证实例
- Struts2 模型验证实例
- 十四、struts2验证实例
- struts2 拦截器 登录验证
- struts2 登录(无验证)
- struts2登录验证方法二
- struts2登录验证小程序
- Struts2拦截器登录验证
- Struts2拦截器登录验证
- Struts2拦截器登录验证
- struts2国际化及登录验证
- Struts2拦截器&拦截器栈 实例:登录验证拦截器
- 卸载mysql5.1后再次安装不成功的解决方法
- zoj1372Networking(模板题)
- 知乎-国外知名 IT 企业是如何做测试的?
- UINavigationController的代理方法
- hdu 1800 Flying to the Mars 详细题解 哈希
- Struts2+mysql登录验证实例
- activity之间的数据传递方法
- 卷积神经网络(CNN)笔记
- Eddy's picture 1162
- 【二十七】图的遍历--DFS、BFS
- hdu 1102 Constructing Roads(Prime算法)
- Android网络取数据显示到ListView实例
- 大讲台谈Hadoop启动常见的问题及解决方案(一)
- Volley使用时InterruptedIOException,NoConnectionError