struts 模板

 

还是以查询学生为例

 

==================================================

 

建一个包PO来封装学生的信息。这些信息与数据库中的表字段一样。

Student.java

 

package po;

//封装一个学生资料

public class Student {

    private String stuId;

    private String stuName;

    private String stuSex;

    private String stuBir;

    private String stuAdd;

    public String getStuAdd() {

       return stuAdd;

    }

    public void setStuAdd(String stuAdd) {

       this.stuAdd = stuAdd;

    }

    public String getStuBir() {

       return stuBir;

    }

    public void setStuBir(String stuBir) {

       this.stuBir = stuBir;

    }

    public String getStuId() {

       return stuId;

    }

    public void setStuId(String stuId) {

       this.stuId = stuId;

    }

    public String getStuName() {

       return stuName;

    }

    public void setStuName(String stuName) {

       this.stuName = stuName;

    }

    public String getStuSex() {

       return stuSex;

    }

    public void setStuSex(String stuSex) {

       this.stuSex = stuSex;

    }

}

 

 

==================================================

再建一个包DAO来连接数据库及相关操作。

StudentDao.java

 

package dao;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.util.ArrayList;

 

import po.Student;

 

//访问数据库

public class StudentDao {

       private Connection conn = null;

       //初始化数据库连接

       public void initConnection(){

              try{

                     Class.forName("oracle.jdbc.driver.OracleDriver");

                     conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.240:1521:oracle","scott","tiger");    

              }catch(Exception ex){

                    

                     ex.printStackTrace();}

       }

       //查询数据库

       public ArrayList queryStuByName(String sname){

              ArrayList stus = new ArrayList();

              String sql = "SELECT 学号,姓名,性别,出生年月,家庭住址 FROM 学籍 WHERE 姓名 LIKE '%" + sname + "%'";

              try{

                     this.initConnection();

                     ResultSet rs = conn.createStatement().executeQuery(sql);

                     while(rs.next()){

                            Student stu = new Student();

                            stu.setStuId(rs.getString("学号"));

                            stu.setStuName(rs.getString("姓名"));

                            stu.setStuSex(rs.getString("性别"));

                            stu.setStuBir(rs.getString("出生年月"));

                            stu.setStuAdd(rs.getString("家庭住址"));

                            stus.add(stu);

                     }

              }catch(Exception ex){ex.printStackTrace();}

              finally{

                     this.closeConnection();

              }

              return stus;

       }

      

       public void closeConnection(){

              try{

                     if(conn!=null){

                            conn.close();

                            conn = null;

                     }

              }catch(Exception ex){ex.printStackTrace();}

       }

}

 

 

 

==================================================

增加Struts支持

提交queryForm中的表单给ActionServlet,ActionServlet将数据给ActionForm.

,ActionFrom将数据打包交Action处理。

queryForm.java

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">

<html>

  <head>   

    <title>My JSP 'queryForm.jsp' starting page</title>

  </head>

 

  <body>

    查询表单. <br>

    <form action="/aaa/query.do" method="post">

    请您输入学生姓名:<input name="sname">

    <input type="submit" value="模糊查询">

    </form>

  </body>

</html>

 

===================================================

 

 

QueryForm.java

package prj2_1;

 

import org.apache.struts.action.ActionForm;

 

//ActionForm:容纳表单提交的值

//1:必须继承 org.apache.struts.action.ActionForm

//2:必须编写和表单元素同名的属性

//3:必须在Struts配置文件中进行注册

public class QueryForm extends ActionForm{

   

    public QueryForm(){

       System.out.println("QueryForm构造函数");

    }

    private String sname;

 

    public String getSname() {

       return sname;

    }

 

    public void setSname(String sname) {

       System.out.println("QueryForm setSname");

       this.sname = sname;

    }

}

 

 

===================================================

 

 

 

QueryAction.java

 

 

package prj2_1;

 

import java.util.ArrayList;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

 

import dao.StudentDao;

 

//Action:负责接受ActionForm的数据,处理

//1:必须继承org.apache.struts.action.Action

//2:重写execute方法来处理业务逻辑

//3:将这个类在配置文件中注册

public class QueryAction extends Action{

 

       public QueryAction(){

              System.out.println("QueryAction构造函数");

       }

       //ActionForward:封装了跳转目标的路径

       //mapping:访问配置文件

       //form:传过来的ActionForm对象

       public ActionForward execute(ActionMapping mapping,

                                                               ActionForm form,

                                                               HttpServletRequest request,

                                                               HttpServletResponse response) throws Exception {

              QueryForm queryForm = (QueryForm)form;

              String sname = queryForm.getSname();

              //String sname = request.getParameter("sname");

              sname = new String(sname.getBytes("ISO-8859-1"));

             

              StudentDao studentDao = new StudentDao();

              ArrayList stus = studentDao.queryStuByName(sname);

             

              request.setAttribute("stus", stus);

             

              //跳转

              //ActionForward af = new ActionForward("/queryResult.jsp");

              ActionForward af = mapping.findForward("RESULT");

              return af;

       }

      

}

 

 

 

 

 

====================================

 

 

Struts-config.xml

 

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

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

 

<struts-config>

  <data-sources />

  <!-- 在此注册ActionForm -->

  <form-beans>

    <!-- name:名称  type:类路径 -->

    <form-bean name="queryForm" type="prj2_1.QueryForm"></form-bean>

  </form-beans>

 

  <global-exceptions />

 

  <!-- 设置URL逻辑名称(全局,任意的Action都可以识别到)-->

  <global-forwards>

    <forward name="RESULT" path="/queryResult.jsp"></forward>

  </global-forwards>

 

  <!-- 注册Action -->

  <action-mappings>

    <!-- type:类路径; name:相应的ActionForm的名称; path:客户端提交到服务器端时指定的路径 -->

    <action name="queryForm" path="/query" type="prj2_1.QueryAction">

        <!-- 设置URL逻辑名称(局部,只有这个Action可以识别到)-->

        <forward name="RESULT" path="/queryResult.jsp"></forward>

    </action>

  

  </action-mappings>

  <message-resources parameter="prj2_1.ApplicationResources" />

</struts-config>

 

 

 

 

 

 

==========================================

 

 

queryRuslt.jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<jsp:directive.page import="po.Student;"/>

<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">

<html>

  <head>   

    <title>My JSP 'queryForm.jsp' starting page</title>

  </head>

 

  <body>

   显示结果. <br>

   <%

        ArrayList stus = (ArrayList)request.getAttribute("stus");

   %>

   <table bgcolor="#ff80ff">

   <tr>

   <td>学号</td>

   <td>姓名</td>

   <td>性别</td>

   <td>出生年月</td>

   <td>家庭住址</td>

   </tr>

   <%

   for(int i=0;i<stus.size();i++){

        Student stu = (Student)stus.get(i);

   %>

   <tr>

   <td><%=stu.getStuId() %></td>

   <td><%=stu.getStuName() %></td>

   <td><%=stu.getStuSex() %></td>

   <td><%=stu.getStuBir() %></td>

   <td><%=stu.getStuAdd() %></td>

   </tr>

   <%    

   }

   %>

   </table>

  </body>

</html>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值