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>
- struts1 DispatchAction类例子
- Struts1 DispatchAction类
- struts1 DispatchAction
- Struts1 DispatchAction
- Struts1的DispatchAction()方法
- struts1(11)-----DispatchAction
- Struts1.3-DispatchAction类-根据请求参数实现业务分派
- DispatchAction类
- DispatchAction类
- DispatchAction类
- Struts1.x系列教程(18):使用DispatchAction类调用多个Action方法
- Struts1.x系列教程(18):使用DispatchAction类调用多个Action方法
- Struts1学习笔记(5)-----用DispatchAction类实现方法的动态分配
- Struts1.x系列教程(18):使用DispatchAction类调用多个Action方法
- 层层递进Struts1(七)详解DispatchAction
- struts1.0 dispatchAction、全局跳转、动态表单
- Struts1框架七之DispatchAction的说明
- struts1 中DispatchAction 与action 的区别,以及DispatchAction的用法含义
- Javascript 高级面向对象
- 413. Arithmetic Slices
- centos7下安装mysql
- HDFS的安全模式
- Struts2输入校验(二)非配置文件校验
- Struts1 DispatchAction类
- 开博客第一天
- android反编译-smali语法
- More Effective C++ --- 理解临时对象
- clip\_gradient
- python学习笔记 使用元类
- 正则表达式个符号的含义与基本内容
- Java并发编程:Lock
- java 多态的含义及特征