1. 程式人生 > >Struts2簡單實現新增學生

Struts2簡單實現新增學生

1、新建JavaWeb工程struts2_addStudent

2、在Web_Root>WEB-INF>lib下匯入struts2的九個基本jar包,

         另新增jdbc和datetimepicker日期小外掛的struts2-dojo-plugin包,建立path

3、建立學生資訊表:stu_num、stu_name、stu_gender、stu_birthday、stu_major、stu_remark

4、在src>com.bean包下新建javaBean,Student.java

package com.bean;
import java.util.Date;

public class Student {
	private String stu_num;
	private String stu_name;
	private int stu_gender;
	private String stu_major;
	private java.sql.Date stu_birthday;
	private String stu_remarks;
	public String getStu_num() {
		return stu_num;
	}
	public void setStu_num(String stu_num) {
		this.stu_num = stu_num;
	}
	public String getStu_name() {
		return stu_name;
	}
	public void setStu_name(String stu_name) {
		this.stu_name = stu_name;
	}
	public int getStu_gender() {
		return stu_gender;
	}
	public void setStu_gender(int stu_gender) {
		this.stu_gender = stu_gender;
	}
	public String getStu_major() {
		return stu_major;
	}
	public void setStu_major(String stu_major) {
		this.stu_major = stu_major;
	}
	public java.sql.Date getStu_birthday() {
		return stu_birthday;
	}
	public void setStu_birthday(java.sql.Date stu_birthday) {
		this.stu_birthday = stu_birthday;
	}
	public String getStu_remarks() {
		return stu_remarks;
	}
	public void setStu_remarks(String stu_remarks) {
		this.stu_remarks = stu_remarks;
	}
	@Override
	public String toString() {
		return "Student [stu_num=" + stu_num + ", stu_name=" + stu_name + ", stu_gender=" + stu_gender + ", stu_major="
				+ stu_major + ", stu_birthday=" + stu_birthday + ", stu_remarks=" + stu_remarks + "]";
	}
	
}

5、在src>com.util包下新建資料庫操作工具類DBUtil.java

package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.bean.Student;

public class DBUtil {
	static Connection conn=null;
	static PreparedStatement ps=null;
	public DBUtil(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false","root","root123");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public boolean addStudent(Student st){
		try{
			ps=conn.prepareStatement("insert into students value(?,?,?,?,?,?)");
			ps.setString(1, st.getStu_num());
			ps.setString(2, st.getStu_name());
			ps.setInt(3, st.getStu_gender());
			ps.setDate(4, st.getStu_birthday());
			ps.setString(5, st.getStu_major());
			ps.setString(6, st.getStu_remarks());
			ps.execute();
			return true;
		}catch(SQLException e){
			e.printStackTrace();
			return false;
		}finally{
			try {
				ps.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

6、在WEB-INF下新建web.xml配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <filter>
    <filter-name>struts2Filter</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

7、在WebRoot下新建stu.jsp的新增學生頁

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>   
    <title>save Student</title>
    <s:head/>
    <sx:head/>    //注意新增這個標籤否則沒有效果
  </head>
  
  <body>
  <h3>新增學生資訊</h3>
    <s:form action="save" method="post">
    	<table>
    		<tr>
    			<!-- <td>學號:</td> -->
    			<td><s:textfield name="student.stu_num" label="學號"/></td>
    		</tr>
    		<tr>
    			<!-- <td>姓名:</td> -->
    			<td><s:textfield name="student.stu_name" label="姓名"/></td>
    		</tr>
    		<tr>
    		    <!-- <td>性別:</td> -->
    			<td><s:radio name="student.stu_gender" label="性別" list="#{1:'男',2:'女'}" value="1"/></td>
    		</tr>
    		<tr>
    			<td>出生時間:</td>
    			<td><sx:datetimepicker name="student.stu_birthday" id="birthday" displayFormat="yyyy-MM-dd"/>
    			</td>
    		</tr>
    		<tr>
    			<!-- <td>專業:</td> -->
    			<td><s:textfield name="student.stu_major" label="專業"/></td>
    		</tr>
    		<tr>
    			<!-- <td>姓名:</td> -->
    			<td><s:textfield name="student.stu_remarks" label="備註"/></td>
    		</tr>
    		<tr>
    			<td><s:reset value="重置"/></td>
    			<td><s:submit value="提交"/></td>
    		</tr>
    	</table>
    </s:form>
  </body>
</html>

8、在src>com.action 下新增處理請求的action類,新建AddStudent.java

package com.action;

import com.bean.Student;
import com.opensymphony.xwork2.ActionSupport;
import com.util.DBUtil;

public class AddStudent extends ActionSupport{
	private Student student;
	public Student getStudent() {
		return student;
	}
	public void setStudent(Student student) {
		this.student = student;
	}
	
	public String execute()throws Exception{
		DBUtil db=new DBUtil(); //建立連線物件
		Student stu=new Student();
		stu.setStu_num(student.getStu_num());
		stu.setStu_name(student.getStu_name());
		stu.setStu_gender(student.getStu_gender());
		stu.setStu_birthday(student.getStu_birthday());
		stu.setStu_major(student.getStu_major());
		stu.setStu_remarks(student.getStu_remarks());
		if(db.addStudent(stu))
			return SUCCESS;
		else
			return ERROR;
	}
}

9、在src下新建struts.xml配置檔案,關聯stu.jsp和action處理類

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <package name="default" namespace="/" extends="struts-default">

	        <action name="save" class="com.action.AddStudent">
	            <result name="success">/success.jsp</result>
	            <result name="error">/error.jsp</result>
	        </action>
       
        </package>
    </struts>

10、在WebRoot下新增success.jsp和error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>success add student</title>
  </head>
  
  <body>
    <h3 style="margin:100px auto">
    	Congratulation! You SUCCESS add Student into Database.
    </h3>
  </body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>error</title>
  </head>
  
  <body>
    <h3 style="margin:100px auto">
    	Sorry! You Fail in add Student into Database.
    </h3>
  </body>
</html>

11、儲存啟動Tomcat瀏覽器測試

陣列庫表

如果日期控制元件沒有效果,檢視是否在<title>的標籤後有新增<s:head/>或 <sx:head/>