Struts1 DispatchAction类

来源:互联网 发布:手机淘宝整点抢购技巧 编辑:程序博客网 时间:2024/05/21 15:01

用另外一种方式编写前文的Struts1小例子,主要用DispatchAction类优化action
下面的网址记录了DispatchAction的作用以及和前文Action的区别,读者可以观看更易理解:
http://blog.csdn.net/dw_java08/article/details/7535616
配置Struts1环境
1)添加所需jar包
楼主这里用的是Struts1.3所以需要导入的jar包在Struts1.3压缩文件中的struts-1.3.10\apps\struts-blank-1.3.10.war\lib目录下,导入目录中所有jar,用到了mysql数据库连接所以导入mysql连接数据库jar包,用到了DispatchAction类,故而需要导入struts-extras jar包。另外例子中用到了Jquery类库所以还导入了Jquery jar包。
2)配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">  <!-- 配置servlet和struts-config.xml文件位置-->  <servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>      <param-name>config</param-name>      <param-value>/WEB-INF/struts-config.xml</param-value>    </init-param>  </servlet>  <!-- 配置访问action的方式-->  <servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>*.do</url-pattern>  </servlet-mapping></web-app>

3)struts-config.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>   <!DOCTYPE struts-config PUBLIC       "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"       "http://struts.apache.org/dtds/struts-config_1_3.dtd">   <struts-config>     <form-beans>       <form-bean name="user" type="model.User" />     </form-beans>     <action-mappings>          <action path="/user" type="action.UserAction" parameter="method" name="user">        <!-- 设置访问action的方法为*.do?method=UserAction方法名-->            <forward name="userlist" path="/userlist.jsp" redirect="true" ></forward>            <forward name="main" path="/main.jsp" redirect="false"></forward>        </action>   </action-mappings>   </struts-config>  

小例子具体内容:
利用mysql数据库,对用户表进行增删改查操作。所需界面:用户注册登陆界面,用户主页面,用户列表页面。

1)JDBC连接mysql数据库

package db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DbLib {    public static Connection getConn() throws ClassNotFoundException, SQLException{        Connection conn;        Class.forName("com.mysql.jdbc.Driver");        String url="jdbc:mysql://localhost:3306/struts1";         conn=DriverManager.getConnection(url,"root","199512");        return conn;    }}

2)编写JavaBean User(FormBean继承ActionForm类)

package model;import org.apache.struts.action.ActionForm;public class User extends ActionForm{    private int id;    private String userName;    private String pwd;    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 getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }}

3)编写数据库连接层类

package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import db.DbLib;import model.User;public class UserDAO {    private String sql;    public void addUser(User user) throws ClassNotFoundException, SQLException    {        Connection conn =DbLib.getConn();        sql="insert into users(UserName,pwd) values(?,?)";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setString(1,user.getUserName());        ps.setString(2,user.getPwd());        ps.execute();        conn.close();    }    public ArrayList<User> getUserList() throws ClassNotFoundException, SQLException    {        Connection conn =DbLib.getConn();        Statement st = conn.createStatement();          sql="select * from users";        ResultSet rs = st.executeQuery(sql);        ArrayList<User> al = new ArrayList<User>();        while(rs.next())        {            User user =new User();            user.setId(rs.getInt(1));            user.setUserName(rs.getString(2));            user.setPwd(rs.getString(3));            al.add(user);        }        return al;    }    public boolean checkExists(User user) throws ClassNotFoundException, SQLException    {        Connection conn = DbLib.getConn();        sql="select * from users where userName=?";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setString(1,user.getUserName());        ResultSet rs = ps.executeQuery();        boolean flag=false;        if(rs.next())        {            flag=true;        }        conn.close();        return flag;    }    public void deleteUser(User user) throws ClassNotFoundException, SQLException    {        Connection conn = DbLib.getConn();        sql="delete from users where id=?";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setInt(1,user.getId());        ps.execute();        conn.close();    }    public User getUserById(int id) throws ClassNotFoundException, SQLException    {        Connection conn = DbLib.getConn();        sql="select * from users where id=?";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setInt(1,id);        ResultSet rs = ps.executeQuery();        User user = new User();        if(rs.next())        {            user.setId(rs.getInt(1));            user.setUserName(rs.getString(2));            user.setPwd(rs.getString(3));        }        conn.close();        return user;    }    public void modifyUser(User user) throws ClassNotFoundException, SQLException    {        Connection conn = DbLib.getConn();        sql="update users set userName=?,pwd=? where id=?";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setString(1,user.getUserName());        ps.setString(2,user.getPwd());        ps.setInt(3,user.getId());        ps.execute();        conn.close();    }        public boolean checkLogin(User user) throws ClassNotFoundException, SQLException    {        Connection conn = DbLib.getConn();        sql="select count(*) from users where userName=? and pwd=?";        PreparedStatement ps = conn.prepareStatement(sql);        ps.setString(1,user.getUserName());        ps.setString(2,user.getPwd());        ResultSet rs = ps.executeQuery();        boolean flag=false;        rs.next();        if(rs.getInt(1)==0)        {            flag=true;        }        conn.close();        return flag;    }}

4)编写Action(继承于DispatchAction类,重写execute方法,改变方法名,通过方法名访问指定action)
编写UserAction

package action;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import dao.UserDAO;import model.User;public class UserAction extends DispatchAction {    UserDAO dao = new UserDAO();    public ActionForward addUser(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3)            throws Exception {        // TODO Auto-generated method stub        User user = (User)arg1;        dao.addUser(user);        return arg0.findForward("main");    }    public ActionForward checkExists(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3)            throws Exception {        // TODO Auto-generated method stub        User user = (User)arg1;        PrintWriter out = arg3.getWriter();        if(dao.checkExists(user))        {            out.print("1");        }        return null;    }    public ActionForward checkLogin(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3)            throws Exception {        // TODO Auto-generated method stub        User user =(User)arg1;        PrintWriter out = arg3.getWriter();        UserDAO dao = new UserDAO();        if(dao.checkLogin(user))        {            out.print("1");        }        return null;    }    public ActionForward deleteUser(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3)            throws Exception {        // TODO Auto-generated method stub        User user =(User)arg1;        dao.deleteUser(user);        return null;    }    public ActionForward modifyUser(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3)            throws Exception {        // TODO Auto-generated method stub        User user = (User)arg1;        dao.modifyUser(user);        return arg0.findForward("userlist");    }}

2)四个用户界面(引入DispatchAction类,这里改变访问action方式为*.do?method=指定action方法名)
用户注册页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/file.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-3.0.0.js"></script><script type="text/javascript">    $(function(){        $("[name='userName']").blur(function(){            if($.trim($(this).val())=="")            {                $("#info").html("用户名不能为空")                return;            }            $.post("user.do?method=checkExists",{userName:$("[name='userName']").val()},function(data){                if(data="1")                {                    $("#info").html("用户名已存在,请重新输入");                }            })        })        $("[type='submit']").click(function(){            if($.trim($("[name='userName']").val()))            {                $("#info").html("用户名不能为空")                return;            }            if($.trim($("[name='pwd']").val()))            {                $("#info").html("密码不能为空")                return;            }            $.post("user.do?method=checkExists",{userName:$("[name='userName']").val()},function(data){                if(data="1")                {                    $("#info").html("用户名存在,请重新输入");                    return;                }            })        })    })</script></head><body>注册<br><br><br>    <form action="user.do?method=addUser" method="post">        <table class="gridtable">            <tr><td>姓名</td><td><input type="text" name="userName"></td></tr>            <tr><td>密码</td><td><input type="text" name="pwd"></td></tr>            <tr><td colspan="2"><input type="submit" value="注册"></td></tr>        </table>    </form>    <div id="info"></div></body></html>

用户登陆页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/file.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-3.0.0.js"></script><script type="text/javascript">    $(function(){        $(":button").click(function(){            var info;            $.post("user.do?method=checkLogin",{userName:$("[name='user']").val(),pwd:$("[name='pwd']").val()},function(data){                if(data=="1")                {                    $("#info").html("用户名或者密码错误,请重新输入");                                }                else                {                    location.href="main.jsp";                }            })        })    })</script></head><body>    <table>        <tr><td>用户名</td><td><input type="text" name="user"></td></tr>        <tr><td>密码</td><td><input type="password" name="pwd"></td></tr>        <tr><td colspan="2"><input type="button" value="登陆"></td></tr>    </table>    <div id="info"></div></body></html>

用户主页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><logic:empty name="user">    未登录</logic:empty><logic:present name="user">    欢迎${user.userName}登陆</logic:present><br>    <a href="register.jsp">注册</a>    <a href="login.jsp">登陆</a>    <a href="userlist.jsp">用户列表</a></body></html>

用户列表页面

<%@page import="java.util.ArrayList"%><%@page import="dao.UserDAO,model.*"%><%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %> <%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/file.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-3.0.0.js"></script><script type="text/javascript">    $(function(){        $(".delete").each(function(index, element) {            $(this).click(function(){                if(!confirm("确定删除这个用户吗?"))                {                    return;                }                $.post("user.do?method=deleteUser",{id:this.lang},function(data){                    location.href="userlist.jsp";                })            })        })        $(".modify").each(function(index, element) {            $(this).click(function(){                location.href="modify.jsp?id="+this.lang;            })        })    })</script></head><body>    <%        ArrayList<User> userlist =  new UserDAO().getUserList();        pageContext.setAttribute("userlist", userlist);//存到EL 4个范围    %>    <table class="gridtable">        <tr><th>序号</th><th>用户</th><th>密码</th><th>删除</th><th>修改</th></tr>        <logic:iterate id="user" name="userlist" indexId="number">        <tr>        <td>            ${number+1}        </td>        <td>            <bean:write name="user" property="userName"/>        </td>        <td>            <bean:write name="user" property="pwd"/>        </td>        <td>            <a href="#" class="delete" lang="${user.id}">删除</a>        </td>        <td>            <a href="#" class="modify" lang="${user.id}">修改</a>        </td>        </tr>        </logic:iterate>    </table></body></html>
1 0
原创粉丝点击