J2EE核心开发学习笔记 003struts2的搭建及连接数据库实现用户注册与登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了J2EE核心开发学习笔记 003struts2的搭建及连接数据库实现用户注册与登录相关的知识,希望对你有一定的参考价值。
搭建struts2是重点,搭建这个框架有些麻烦,遇到不少的问题,终于一一解决,写在此处,以作备忘。
1. 首先要下载struts2的一些组件,我下载的版本是struts-2.3.28.1,MyEclipse是Version: 2014版本的。由于版本的不断升级,导致在搭建的过程中,和过去相对较旧的版本搭建有了一些差别,不过问题不是很大。这里是下载的struts2的地址:http://struts.apache.org/download.cgi#struts25
2. 解压下载的组件我们可以看到这样的目录,
apps中是struts2自带的例子,docs是struts2的参考文档,lib是struts2所有的组件jar包,src是struts2的源代码。我们打开apps解压struts2-blank.war,在解压的struts2-blank\WEB-INF\lib文件中找到以下组件,
另外由于我们需要连接数据库所以找一个连接mysql的jar,我这里用的是mysql-connector-java-5.1.13-bin.jar,新建一个web项目,将这些组件复制到建立的web工程下的WEB-INF/lib目录中,这些组件其实就是编译好的类文件。
3. 配置web.xml文件,这也是很关键的一步,在启动服务器时,服务器要根据这个文件去进行初始化。而struts2和struts1启动有很大的不同,它是通过过滤器来启动的,而struts1是通过加载servlet来启动的,故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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_9" version="2.4"> <display-name>Struts Blank</display-name> <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>
4. 接下来就是配置struts.xml文件。这个文件就好像起着一个过滤器的作用,用户发来的请求要经过该文件的过滤,根据用户请求中所请求的处理类型,来选择相应的处理逻辑。我们这里的struts.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> <package name="backed" namespace="/backed" extends="struts-default"> <action name="login" class="com.struts2_test.action.UserAction" method="login"> <result name="loginout">/error.jsp</result> <result name="loginin">/welcome.jsp</result> </action> <action name="regist" class="com.struts2_test.action.UserAction" method="regist"> <result name="error">/error.jsp</result> <result name="success">/welcome.jsp</result> </action> </package> </struts>
在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这个类。
项目的目录结构为:
它们的源码为:
regist.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'regist.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <center> <form action="backed/regist" method="post"> <table> <caption><h2>用户注册</h2></caption> <tr> <td>username: </td> <td><input type="text" name="username" /></td> </tr> <tr> <td>password: </td> <td><input type="password" name="password" /></td> </tr> <tr> <td><input type="submit" name="submit" /></td> </tr> </table> </form> </center> </body> </html>
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="backed/login" method="post"> <table align="center"> <caption><h2>用户登录</h2></caption> <tr> <td>用户名:<input type="text" name="username" /></td> </tr> <tr> <td>密码: <input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit"/></td> </tr> </table> </form> </body> </html>
welcome.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 您已经执行成功! <br> </body> </html>
error.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'error.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 执行失败!! <br> </body> </html>
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:
经过这几步后,启动你的服务器,在地址栏输入登录界面的地址,一个简单的struts2框架就搭建好了。
csdn下载:http://download.csdn.net/detail/davebobo/9533847
以上是关于J2EE核心开发学习笔记 003struts2的搭建及连接数据库实现用户注册与登录的主要内容,如果未能解决你的问题,请参考以下文章