`

登录系统-基于struts2的分层架构

阅读更多

1.下载支持Netbeans7.0Struts2插件,在工具-插件-已下载-添加插件菜单下安装struts2插件。

2.新建一个web项目,在步骤4中选择struts2选项,去掉“Create example page”选项:

 

在自动生成web.xml中,给出了struts2过滤器配置,默认拦截所有请求:“\*,

<filter>

        <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

</filter-mapping>

改成只拦截“*.action”和“*.jsp,即只对strutsjsp文件拦截:

<filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>*.action</url-pattern>       

    </filter-mapping>

    <filter-mapping>

        <filter-name>struts2</filter-name>       

        <url-pattern>*.jsp</url-pattern>

    </filter-mapping>

在自动生成的struts.xml文件(位于缺省包中)里,加入如下代码:

<package name="book" extends="struts-default">

        <action name="UserAction" class="book.action.UserAction">

            <result name="msg">/index.jsp</result>

        </action>

</package>

表示凡是经过struts2过滤的名为“UserAction”的action,均执行“book.action.UserAction”类程序,根据结果转向“index.jsp”页面。

3.创建如图所示的包结构:

 

4.在“bbok.common”包放置工具类用于数据库连接,在此添加DB_Conn.java文件:

package book.common;

 

import java.io.PrintWriter;

import java.sql.*;

 

public class DB_Conn {

    private  String driverName="com.mysql.jdbc.Driver";  //驱动程序名

    private  String userName="root";                   //数据库用户名

    private  String userPwd="123456";                        //密码

    private  String url="jdbc:mysql://localhost:3306/book";   //连接字符串

    private  Connection conn=null;                  //数据库连接对象

    public Statement sm=null;                       //数据库语句对象

    private PrintWriter out = null;

   

    // 建立数据库连接

    public void ConnectDB(){

            try {

                   Class.forName(driverName).newInstance();

               conn=DriverManager.getConnection(url,userName,userPwd);  //获得数据库连接

                sm=conn.createStatement();

         } catch(Exception e) {

                out.print("数据库连接失败!");

            }

    }

   

    public void CloseDB(){

           try {

                     if (sm != null) {

                            sm.close();

                     }

                     conn.close();

              } catch (SQLException SqlE) {

                     out.print("数据库关闭失败!");

              }

   

   }

}

5.包“book.model”放置实体类,在此添加user.java文件:

       package book.model;

 

public class User {

       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;

       }

      

}

6.包“book.idao”放置数据访问接口,添加IUserDao接口文件:

package book.idao;

import book.model.User;

public interface IUserDao {

    User fineOne(String userName,String userPassword);

}

7. 包“book.dao”放置数据访问类,添加UserDao.java文件,实现IUserDao接口,完成数据访问:

package book.dao;

 

import book.common.DB_Conn;

import book.model.User;

import book.idao.IUserDao;

import java.sql.ResultSet;

import java.sql.SQLException;

 

public class UserDao implements IUserDao{

      

    //创建公用数据库连接类对象

    DB_Conn db_conn=new DB_Conn();

    //通过用户名称获取用户信息

    @Override

    public User fineOne(String username, String password) {

       db_conn.ConnectDB();

       ResultSet rs = null;

       try {

            String sql = "select * from admin where u_Name ='"

                     + username + "' and u_Pass='" + password + "'";

            rs = db_conn.sm.executeQuery(sql);        // 执行sql语句

            User user = null;

            if (rs.next()) {

                user = new User();                     

              user.setUsername(username);

              user.setPassword(rs.getString("u_Pass"));                       

              return user;

            }

            return user;

        }catch (SQLException SqlE) {

            return null;

        }catch (Exception E) {

            return null;

       }finally {

            // 关闭连接,释放数据库资源:

            db_conn.CloseDB();

       }

    }    

}

8.在包“book.iservice”中放置数据的逻辑访问接口,在此添加IUserService.java接口文件:

package book.iservice;

import book.model.User;

public interface IUserService {

    User findUserByNameAndPassword(String userName,String userPassword);

}

9. 包“book.service”放置数据逻辑访问类,添加UserService.java文件,实现IUserService,调用UserDao类的功能,完成对数据逻辑访问:

package book.service;

import book.iservice.IUserService;

import book.model.User;

import book.idao.IUserDao;

import book.dao.UserDao;

public class UserService implements IUserService{

    private IUserDao userDao=new UserDao();

    @Override

    public User findUserByNameAndPassword(String userName,String userPassword){

        return userDao.fineOne(userName, userPassword);

    }   

}

10.在“book.action”包中放置action类,以实现对系统的控制,在此添加UserAction.java文件,该action类调用数据的逻辑访问类UserService实现对数据库的查询,根据查询结果构造不同的字符串:

package book.action;

import com.opensymphony.xwork2.ActionContext;

import book.iservice.IUserService;

import book.service.UserService;

import book.model.User;

public class UserAction {

    private IUserService userService=new UserService();

    private String userName;

    private String userPassword;

    private String msg;

    public String execute()throws Exception{

        User user=userService.findUserByNameAndPassword(userName, userPassword);

        if(user!=null){

            msg="登录成功!"+user.getUsername();

            ActionContext.getContext().getSession().put("user",user);

        }else{

            msg="登录失败!<a href=\"JavaScript:window.history.back()\">返回</a>";

        }

        return "msg";

    }

    public void setUserName(String userName){

        this.userName=userName;

    }

    public void setUserPassword(String userPassword){

        this.userPassword=userPassword;

    }

    public String getMsg(){

        return msg;

    }

}

11. 创建如下两个页面:

Login.jsp:

<%@ page pageEncoding="gb2312" %>

<%@ page contentType="text/html; charset=gb2312" %>

<% request.setCharacterEncoding("gb2312"); %>

<%@ page language="java" %>

<html>  

         <head><title>登录网页</title></head>

       <body>

       <form method="POST" action="UserAction.action">

 

       <table  >

           <tr>

             <td width="890" align="left" colspan="2">

              <b><font size="5">系统登录</font></b>

               <hr>

             </td>

           </tr>

            <% if (request.getAttribute("error") != null){ %>

       <tr>

              <td width=100% align=center colspan=4 height=36>

                   <font color=red><b><%=request.getAttribute("error")%></b></font>

              </td>

       </tr>

       <%

     }

       %>

           <tr>

             <td width="75" align="center">

               <p align="right">账号:</p>

             </td>

             <td width="809" align="center">

               <p align="left">

                <input type="text" name="userName" size="20"></td>

           </tr>

           <tr>

             <td width="75" align="center">

               <p align="right">密码:</p>

             </td>

             <td width="809" align="center">

               <p align="left">

               <input type="password" name="userPassword" size="20">

               <input type="submit" value="登录" name="loginButton"></td>

           </tr>

         </table>

       </form>

       </body>

       </html>

在这个页面中,下面的form标记语句:

<form method="POST" action="UserAction.action">

表示该页面提交一个名为:"UserAction"action,注意和struts.xml文件中的actionname相对应。

index.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>显示信息</title>

    </head>

    <body>

        <h1>Hello World!</h1>

        <div id="content">

            <center>

                <br/><%=request.getAttribute("msg")%>

            </center>

        </div>

    </body>

</html>

该页面的标记语句:

<%=request.getAttribute("msg")%>

表示接收来自actionmsg字符串。

12. 生成项目,并运行http://localhost:8080/login/login.jsp

 

分享到:
评论

相关推荐

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    ### J2EE电子商务系统开发从入门到精通——基于Struts和Hibernate技术实现 #### J2EE概论 **1.1 简单双层架构到复杂多层架构** - **1.1.1 双层(C/S)软件架构设计** - 双层架构(客户端/服务器架构,Client/...

    基于struts2+hibernate在线书店系统

    本项目是一个基于Struts2和Hibernate框架的简单在线书店系统,采用MySQL作为后台数据库,旨在实现网上书店的基本业务功能,并且具有清晰的分层架构。以下是该系统的关键技术和实现细节的详细介绍。 **1. Struts2...

    基于struts2的个人信息管理系统

    **基于Struts2的个人信息管理系统详解** Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发。在这个“基于Struts2的个人信息管理系统”中,我们将会探讨如何利用Struts2来构建一个高效...

    基于Struts2实现报道管理系统

    **基于Struts2实现报道管理系统** Struts2是一款强大的MVC框架,用于构建Java Web应用程序。在报道管理系统中,Struts2起到了核心架构的作用,它提供了模型-视图-控制器的设计模式,使得开发者能够更有效地组织和...

    管理系统系列--基于JSP struts2和hibernate3的 图书馆管理系统 包括读者和图书的基本管理和检索、排序.zip

    《基于JSP Struts2和Hibernate3的图书馆管理系统详解》 图书馆管理系统是信息化时代图书馆管理的重要工具,它通过计算机技术实现图书的借阅、归还、检索、排序等一系列操作,大大提高了工作效率。本系统采用Java ...

    MyClipse6.0\Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    本项目“学生成绩管理系统”就是基于Struts2、Spring和Hibernate三大主流Java Web框架进行整合的一个实例。这样的整合能够充分利用各框架的优势,实现模型-视图-控制器(MVC)架构,提供数据持久化、业务逻辑处理...

    OA系统+struts2

    综上所述,基于Struts2的OA系统利用其强大的控制能力和组件扩展性,能够构建出功能完善、易维护的企业级应用。开发者可以通过合理的架构设计,结合Servlet技术,打造出高效、稳定、安全的OA系统,满足不同企业的个性...

    计算机-后端-基于J2EE架构的SSH组合框架的研究.pdf

    在本篇论文中,作者深入探讨了J2EE(Java 2 Platform, Enterprise Edition)架构,针对J2EE架构存在的问题提出了解决方案。通过引入Struts、Spring和Hibernate这三大框架,形成了所谓的SSH(Struts + Spring + ...

    基于Struts和Hibernate的J2EE架构的研究

    ### 基于Struts和Hibernate的J2EE架构的研究 #### 1. J2EE架构概述 J2EE(Java 2 Platform Enterprise Edition)是由Sun Microsystems推出的一种用于构建企业级应用的平台标准。该平台支持多层分布式应用,并且为...

    基于struts的留言板管理系统

    这个基于Struts的留言板管理系统充分利用了Struts的核心特性,实现了用户交互、数据处理和业务逻辑的分离,提升了系统的可维护性和可扩展性。 首先,我们需要理解Struts的工作原理。Struts是一个MVC(Model-View-...

    基于Struts架构的成绩管理系统

    基于Struts架构的成绩管理系统,是一项综合运用了JSP、Tomcat、MySQL Server及Struts框架技术,旨在构建一套高效、灵活、易于维护的学生成绩管理解决方案的研究项目。本论文详细探讨了MVC架构下的JAVA WEB设计与开发...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    - **系统架构设计**:采用分层架构模式,包括表示层、业务逻辑层和数据持久层。每一层都有相应的package,如controller、service、dao等。 - **Spring配置**:在applicationContext.xml中定义UserLibrary,添加所有...

    基于Struts,Hibernate和Spring的J2EE架构研究

    ### 基于Struts、Hibernate和Spring的J2EE架构研究 #### 一、引言 随着互联网技术的发展和企业需求的日益多样化,软件开发领域面临着越来越多的挑战。为了解决这些问题,J2EE(Java 2 Platform, Enterprise ...

    struts2做的学生管理系统

    在本案例中,"struts2做的学生管理系统"是一个基于Struts2框架开发的项目,主要用于管理学生的各种信息。该项目利用了SQL Server 2005作为后端数据库,提供了数据存储和查询的功能。 首先,让我们深入理解Struts2的...

Global site tag (gtag.js) - Google Analytics