简易Struts2登录实现

来源:互联网 发布:数据库零基础教程 编辑:程序博客网 时间:2024/05/22 17:36

简易Struts2登录实现

1.      Struts2简介:

        Struts有两个版本。

        Struts1是最早的基于MVC模式的轻量级web框架,它能够合理地划分代码结构,并包含验证框架,国际化框架等多种实用工具框架。

       随着技术的进步,Struts1的局限性也越多的暴露出来。Struts2是Struts1的下一代产品, 实在Struts1和webwork技术的基础上进行合并后的全新框架。

      事实上,Struts1和Struts2在设计思想上是很不相同的。Struts2是以webwork为核心的,采用拦截器的机制来处理用户的请求。

     所以,Struts2可以理解为是webwork的更新产品。

2.      struts运行流程:

jsp请求à xml.xml(过滤)àstruts .xml(action请求路径)àjava(路径对应的控制器)à

struts.xml(result请求路径)àjsp(反馈请求结果)

3.     整个项目图:

 

使用到的相关知识:

驱动模型,JDBC,properties,struts标签

4.       源代码:

1.     导入jar包

2.     Web.xml核心过滤器

<?xml version="1.0" encoding="UTF-8"?>

<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"version="2.5">

  <welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  <!-- struts核心过滤器 -->

  <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>

3.     数据库->user表

create table user(

 id int primary key auto_increment,

 username varchar(20) unique,

 password varchar(18)

);

insert intouser(username,password) values('ww','123'); 

select * from user where username='ww' and password='123';

4.entity->User.java:

package entity;

public class User{

       private int id;

       private String username;

       private String password;

       public int getId() {

              return id;

       }

       public void setId(int id) {

              this.id = id;

       }

       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 toString() {

              return "User [id=" + id+ ", username=" + username + ", password="

                            + password +"]";

       }

}

5.utils->JDBCUtils

package utils;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

public class JDBCUtils {  

private staticProperties prop;

static {

          

           prop =new Properties();

           /*InputStream in3=new FileInputStream(new File("./src/db.properties"));*/

           try {

                    prop.load(JDBCUtils.class.getClassLoader().getResourceAsStream(

                                       "db.properties"));

                    Class.forName(prop.getProperty("driver"));

            

           }catch (Exception e) {

                    thrownew RuntimeException(e);

           }

 

}

 

public staticConnection getConnection() {

                  try{

                             returnDriverManager.getConnection(prop.getProperty("url"),

                                                prop.getProperty("username"),prop.getProperty("password"));

                    }catch (SQLException e) {

                             thrownew RuntimeException(e);

                    }

 

}

public staticvoid close(Connection conn,PreparedStatement prep,ResultSet rs){

        if(rs !=null){

            try{

               rs.close();

            }catch (SQLException e) {

               e.printStackTrace();

            }finally{

               rs = null;

            }

        }

        if(prep!= null){

            try{

               prep.close();

            }catch (SQLException e) {

               e.printStackTrace();

            }finally{

               prep = null;

            }

        }

        if(conn!= null){

            try{

               conn.close();

            }catch (SQLException e) {

               e.printStackTrace();

            }finally{

                conn = null;

            }

        }

 

    }

}

6.config->db.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8

username=root

password=root

7.dao->UserDao.java

package dao;

import entity.User;

public interface UserDao {

     public User  getUser(String username,String password);//查找这个用户

}

8.dao.Impl->UserDaoImpl.java

      package dao.impl;

 

importjava.sql.Connection;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

 

importutils.JDBCUtils;

importdao.UserDao;

importentity.User;

 

public classUserDaoImpl implements UserDao{

    private Connection conn;

    private PreparedStatement prep;

    private ResultSet rs;

    public User getUser(String username,Stringpassword) {

           try {

                  String sql="select * fromuser where username=? and password=?";

                  conn=JDBCUtils.getConnection();

                  prep=conn.prepareStatement(sql);

                  prep.setString(1, username);

                  prep.setString(2, password);

                  rs=prep.executeQuery();

                  if (rs.next()) {

                         User user=new User();

                         user.setId(rs.getInt("id"));

                         user.setUsername(rs.getString("username"));

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

                         return user;

                  }else {

                         return null;

                  }

                 

           } catch (Exception e) {

                  throw  new RuntimeException(e);

           }finally{

                  JDBCUtils.close(conn, prep,rs);

           }

    }

}

9.service->UserService.java

     package service;

 

import entity.User;

 

public interfaceUserService {

       public User  getUser(String username,String password);//查找这个用户

}

10.service.impl->UserServiceImpl.java

      package service.impl;

 

importdao.UserDao;

import dao.impl.UserDaoImpl;

importservice.UserService;

importentity.User;

 

public classUserServiceImpl implements UserService{

    private UserDao userDao=new UserDaoImpl();

    public User getUser(String username,String password) {

           return userDao.getUser(username,password);

    }

}

11.action->LoginAction.java

  package action;

 

importservice.UserService;

importservice.impl.UserServiceImpl;

 

importcom.opensymphony.xwork2.ActionSupport;

importcom.opensymphony.xwork2.ModelDriven;

importentity.User;

public classLoginAction extends ActionSupport implements ModelDriven<User>{

       private static final longserialVersionUID = 1L;

       private UserService userService=newUserServiceImpl();

       private User user=new User();

       @Override

       public String execute() throws Exception{

              System.out.println(user.getUsername());

              System.out.println(user.getPassword());

              UseruserInfo=userService.getUser(user.getUsername(),user.getPassword());

              System.out.println(userInfo);

              if (userInfo!=null) {

                     return SUCCESS;

              }else {

                     return ERROR;

              }

       }

       public User getModel() {

              return user;

       }

}

12.config->user.xml

<?xmlversion="1.0" encoding="UTF-8" ?>

<!DOCTYPEstruts PUBLIC

       "-//Apache Software Foundation//DTDStruts Configuration 2.3//EN"

       "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

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

    <global-results>

        <resultname="error">/error.jsp</result>

    </global-results>

      <action name="login"class="action.LoginAction">

         <resultname="success">/success.jsp</result>

      </action>

  </package>

</struts>

13.src->struts.xml

<?xmlversion="1.0" encoding="UTF-8" ?>

<!DOCTYPEstruts PUBLIC

       "-//Apache Software Foundation//DTDStruts Configuration 2.3//EN"

       "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

 <constantname="struts.i18n.encoding"value="UTF-8"></constant>

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

 <includefile="user.xml"></include>

</struts>

14.webRoot->login.jsp

<%@ pagelanguage="java" import="java.util.*"pageEncoding="UTF-8"%>

<%@ tagliburi="/struts-tags" prefix="s" %>

<!DOCTYPE HTMLPUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title></title>

  </head>

  <body>

    <s:formaction="login.action">

     <s:label>用户登录</s:label>

    <s:textfield name="username"label="用户名"></s:textfield>

    <s:textfield name="password"label="密码"></s:textfield>

    <s:submit value="登录"></s:submit>

    </s:form>

  </body>

</html>

15.webRoot->success.jsp

<%@ pagelanguage="java" import="java.util.*"pageEncoding="UTF-8"%>

<%@ tagliburi="/struts-tags" prefix="s" %>

<!DOCTYPE HTMLPUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>登录成功</title>

  </head>

  <body>

        用户信息:

      用户名: <s:propertyvalue="username"/><br>

      密码:<s:propertyvalue="password"/>

  </body>

</html>

16.webRoot->error.jsp

<%@ pagelanguage="java" import="java.util.*"pageEncoding="UTF-8"%>

<%@tagliburi="/struts-tags" prefix="s" %>

<!DOCTYPE HTMLPUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>错误信息</title>

  </head>

  <body>

        用户名或密码不正确

  </body>

</html>

5.       运行结果:

登录页面:


成功页面:


错误页面:


此时,一个比较综合的Struts框架的登录页面就算完成了。可以根据自身需求不断扩展功能。

微笑微笑本内容由安康学院“雨季”原创!

 

 

 

原创粉丝点击