我的课堂的登录界面以及发布活动的制作

 

目录

1、 新建工程 

2、 导包,并添加引用 

3、 添加spring支持 

4、 添加struts支持 

5、 将Struts作为Spring对象进行整合 

6、 添加hibernate支持 

7、 创建Teacher表的反向工程 

8、 在applicationContext.xml中增加hbm文件的描述 

9、 新建TeacherDao接口 

10、 新建TeacherDaoImp实现TeacherDao接口中的方法 

11、 在applicationContext.xml中增加bean对象 

12、 登录功能的实现 

(1)在struts.xml增加login action 

(2)在WebAction中增加login方法 

(3)新建login.jsp 

13、 在web.util中增加Md5Util类 

14、 对SysRelation表和SysMenu表创建反向工程 

15、 新建RelationDao接口 

16、 新建RelationDaoImp类实现relationDao接口 

17、 在applicationContext.xml增加bean对象 

18、 主界面左侧菜单栏的制作 

(1) 在struts.xml增加index action 

(2) 在WebAction中增加index方法 

(3) 新建newIndex.jsp 

19、 对activity表和activity_type 表创建反向工程 

20、 在applicationContext.xml中增加两个hbm文件的描述 

21、 新建ActivityDao接口 

22、 新建ActivityDaoImp类实现ActivityDao中的方法 

23、 发布活动的制作 

(1)在struts.xml增加action punishActivity 

(2)在webAction中增加publishActivity方法 

(3)新建publishActivity.jsp 

24、 新增活动的制作 

(1)在struts.xml中新增action addActivity 

(2)在WebAction中增加addActivity方法 

25、 在web.util中增加PhotoYsImp 类 

26、 运行项目可以成功发布活动 

 

1、新建工程

 

输入工程名 SDSYwZDL,版本号选择JavaEE 5

2、导包,并添加引用

将所有需要的包复制进去之后,选中工程,右键->build path->configue build path

选中Add External JARs,然后选中刚刚导入的所有包,添加引用完毕

3、添加spring支持

 

Spring的版本为2.5

 

不使用MyEclipse自带的库包,并去掉spring-web和AOP选项

4、添加struts支持

选择对所有的网页进行过滤处理

不使用MyEclipse自带的库包

 

5、将Struts作为Spring对象进行整合:

1)修改web.xml

添加listener

 

选择ContextLoaderListener

添加context-param:

参数名:contextConfigLocation,参数值:/WEB-INF/classes/applicationContext.xml

最终的web.xml文件如下

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

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

  <display-name>SDSYwZDL</display-name>

  <welcome-file-list>

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

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

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

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

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

  </welcome-file-list>

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

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

    </context-param>

</web-app>

2)在src文件夹下新建struts.properties文件

 

在该文件中,添加:struts.objectFactory=spring

注意:这个struts.properties文件是struts和spring两个框架的关联文件

 

6、添加hibernate支持

选择 3.2 版本,利用 Spring 生成 SessionFactory 类对象,不用自己生成 SessionFactory 类:

不使用Myeclipse自带的库包

 

7、创建Teacher表的反向工程

 

因为id是自增字段,所以选择生成方式native

8、在applicationContext.xml中增加hbm文件的描述

因为是中途方向工程,所以需要手动增加hbm文件的描述

 <value>org/model/Teacher.hbm.xml</value>

9、新建TeacherDao接口

package web.dao;

import java.sql.Timestamp;

import java.util.List;

import java.util.Map;

import org.model.Teacher;

public interface TeacherDao {

public Teacher login(String name,String psd);//登录

public double pageSum(int j);//分页

public List<Teacher> allTeacher();//找到所有的老师

public Teacher isExist(String tId);

}

 

10、新建TeacherDaoImp实现TeacherDao接口中的方法

package web.dao.imp;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.model.Teacher;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import web.dao.TeacherDao;

public class TeacherDaoImp extends HibernateDaoSupport implements TeacherDao {

 

@SuppressWarnings("unchecked")

@Override

public Teacher login(String name, String psd) {

String[] parm = {name, psd};

List<Teacher> l = getHibernateTemplate()

.find("from Teacher t where t.id.TTeacherId = ? and t.TPassword = ?",parm);

if (l.size() > 0) {

return l.get(0);

} else 

return  null;

}

@Override

public double pageSum(int j) {

Session session = getSession();

System.out.println(j);

Query query;

String b[]={"商学院","信息学院","人文学院","机械学院","外国语学院","建筑学院","设计学院","理学院","中旅学院"};

if(j==0){

query = session.createQuery("select count(*) from Teacher where t_power=1");

 

}else{

query= session.createQuery("select count(*) from Teacher where t_power=1 and t_college=?");

query.setParameter(0, b[j-1]);//传参

}

Long c = (Long) query.uniqueResult();

double a=c;

session.close();

return a;

}

@SuppressWarnings("unchecked")

@Override

public List<Teacher> allTeacher() {

Session ssn = getSession();

Query query = ssn.createQuery("from Teacher where TPower=1");

List<Teacher> l = query.list();

ssn.close();

return l;

 

}

@Override

public Teacher isExist(String tId) {

// TODO Auto-generated method stub

List<Teacher> list = getHibernateTemplate().find(

"from Teacher s where s.id.TTeacherId=?", tId);

if (list.size()>0) {

return list.get(0);

}else{

return null;

}

}

 

}

 

11、在applicationContext.xml中增加bean对象

<bean id="teacherDaoImp" class="web.dao.imp.TeacherDaoImp">

<property name="sessionFactory" ref="mysessionFactory"></property></bean>

 

 

<bean id="webAction" class="web.action.WebAction">

<property name="teacherDao" ref="teacherDaoImp"></property>

</bean>

12、登录功能的实现

(1)在struts.xml增加login action

 <action name="login" method="login" class="webAction">

     <result type="json" name="success">

      <param name="root">s</param>

        </result>

     </action>

 

(2)在WebAction中增加login方法

Teacher teacher;

TeacherDao teacherDao;

private int result;

private String psdMd5;

public Teacher getTeacher() {

return teacher;

}

public void setTeacher(Teacher teacher) {

this.teacher = teacher;

}

public TeacherDao getTeacherDao() {

return teacherDao;

}

public void setTeacherDao(TeacherDao teacherDao) {

this.teacherDao = teacherDao;

}

public int getResult() {

return result;

}

public void setResult(int result) {

this.result = result;

}

public String getPsdMd5() {

return psdMd5;

}

public void setPsdMd5(String psdMd5) {

this.psdMd5 = psdMd5;

}

public String login() throws Exception {

System.out.println("开始登陆" );

Teacher t = teacherDao.login(name, MD5Util.MD5(psdMd5));

if (t == null) {

result = 1;

} else {

result = 0;

Integer p = 1;

session.put("user", t);

session.put("power", t.getTPower());

session.put("loginname", t.getTName());

session.put("loginid", t.getId().getTTeacherId());

session.put("id", t.getId().getTId());

session.put("actpag", p);// 用于活动分页

session.put("itempag", p);// 用于活动类别分页1

session.put("addresspag", p);// 地址分页2

session.put("announcepag", p);// 公告分页3

}

s = JSONTools.createJsonObject("result", result);

return "success";

}

(3)新建login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE html>

<html>

<base >

<title>后台登陆</title>

<meta charset="UTF-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />

<meta http-equiv="X-UA-Compatible" content="IE=9" />

<link rel="stylesheet" href="css/reset2.css">

<link rel="stylesheet" href="css/style2.css" media="screen" type="text/css" />

<style>

body {

background-color: #FEFEFE;

}

</style>

<link rel="stylesheet" type="text/css" href="css/style3.css">

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

<link rel="stylesheet" href="css/bootstrap.min.css" />

<link rel="stylesheet" href="css/bootstrap-responsive.min.css" />

<link rel="stylesheet" href="css/matrix-login.css" />

<link href="font-awesome/css/font-awesome.css" rel="stylesheet" />

<script src="http://apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>

<script src="http://apps.bdimg.com/libs/respond.js/1.4.2/respond.min.js"></script>

<style type="text/css">

input {

font-family: "Microsoft Yahei";

}

.control-label {

color: #B2DFEE;

padding-left: 4px;

}

</style>

</head>

<body>

<script src="js/index.js"></script>

<div id="myDiv">

<div id="loginbox">

<div class="control-group normal_text">

<h2 style="color:#B2DFEE;font-size:28px;">“我的课堂”信息中心</h2>

</div>

<form method="Get" id="loginform" class="form-vertical" action="login.action"

>

<div class="control-group">

<label class="control-label">用户名</label>

<div class="controls">

<div class="main_input_box">

<span class="add-on bg_lg"><i class="icon-user"

style="font-size:16px;"></i></span><input name="name" type="text" />

</div>

</div>

</div>

<div class="control-group2">

<label class="control-label">登陆密码</label>

<div class="controls">

<div class="main_input_box">

<span class="add-on bg_ly"><i class="icon-lock"

style="font-size:16px;"></i></span><input name="psdMd5" type="password" />

</div>

</div>

</div>

<div class="control-group2" style="margin: 0px 0px 0px 21px">

    

<div id="div_id_embed"></div>

</div>

  </form>

<script type="text/javascript">

/*

function refreshyz() //刷新验证

{

gt_captcha_obj.refresh(function() {

pass = false;

});

}*/

window.onload = function() {

$('#loginBtn').click(function() {

$.ajax({

type: "get",

url: "login.action",

dataType: "json",

data: $('#loginform').serialize(),

success: function(data) {

if(data.result == 0) {

window.location.href = 'newIndex.jsp'

} else {

alert("用户名或密码错误");

}

},

error: function() {

alert("失败!");

}

});

});

 

};

</script>

<div class="form-actions">

<span class="pull-right"> <input type="button" id="loginBtn"

class="btn btn-success" style="width:440px;"

value=" 登    录" />

</span>

</div>

</div>

<script src="js/jquery.min.js"></script>

<script src="js/matrix.login.js"></script>

</div>

</body>

</html>

 

13、在web.util中增加Md5Util类

package web.util;

import java.security.MessageDigest;

public class MD5Util {

// MD5加码。32位

public static String MD5(String inStr) {

MessageDigest md5 = null;

try {

md5 = MessageDigest.getInstance("MD5");

} catch (Exception e) {

System.out.println(e.toString());

e.printStackTrace();

return "";

}

char[] charArray = inStr.toCharArray();

byte[] byteArray = new byte[charArray.length];

for (int i = 0; i < charArray.length; i++)

byteArray[i] = (byte) charArray[i];

byte[] md5Bytes = md5.digest(byteArray);

StringBuffer hexValue = new StringBuffer();

for (int i = 0; i < md5Bytes.length; i++) {

int val = ((int) md5Bytes[i]) & 0xff;

if (val < 16)

hexValue.append("0");

hexValue.append(Integer.toHexString(val));

}

return hexValue.toString();

}

// 可逆的加密算法

public static String KL(String inStr) {

// String s = new String(inStr);

char[] a = inStr.toCharArray();

for (int i = 0; i < a.length; i++) {

a[i] = (char) (a[i] ^ 't');

}

String s = new String(a);

return s;

}

// 加密后解密

public static String JM(String inStr) {

char[] a = inStr.toCharArray();

for (int i = 0; i < a.length; i++) {

a[i] = (char) (a[i] ^ 't');

}

String k = new String(a);

return k;

}

// 测试主函数

public static void main(String args[]) {

String s = new String("12345678");

System.out.println("原始:" + s);

System.out.println("MD5后:" + MD5(s));

System.out.println("MD5后再加密:" + KL(MD5(s)));

System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));

}

}

 

14、对SysRelation表和SysMenu表创建反向工程

 

因为id是自增字段,所以选择生成方式native

15、新建RelationDao接口

package web.dao;

import java.util.List;

import org.model.SysMenu;

import org.model.SysRelation;

public interface RelationDao {

List<SysMenu> findRelation(int id);

List<String> findPmenu(int id);

}

16、新建RelationDaoImp类实现relationDao接口

package web.dao.imp;

import java.util.ArrayList;

import java.util.List;

import org.model.SysMenu;

import org.model.SysRelation;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import web.dao.RelationDao;

public class RelationDaoImp extends HibernateDaoSupport implements RelationDao {

public List<SysMenu> findRelation(int id) {

// TODO Auto-generated method stub

List<Object[]> list=this.getHibernateTemplate().find("from SysMenu m,SysRelation r where m.id=r.mid and r.tid=? order by m.sign",id);

List<SysMenu> listm=new ArrayList<SysMenu>();

if(list!=null&&list.size()>0){

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

listm.add((SysMenu)list.get(i)[0]);

}

}

return listm;

}

public List<String> findPmenu(int id) {

// TODO Auto-generated method stub

List<Object[]> list=this.getHibernateTemplate().find("from SysMenu m,SysRelation r where m.id=r.mid and r.tid=? group by m.name"

+ " order by m.fsign",id);

List<String> listm=new ArrayList<String>();

if(list!=null&&list.size()>0){

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

listm.add(((SysMenu)list.get(i)[0]).getName());

}

}

return listm;

}

}

 

17、在applicationContext.xml增加bean对象

 <bean id="relationDaoImp" class="web.dao.imp.RelationDaoImp">

<property name="sessionFactory" ref="mysessionFactory"></property></bean>

 

<bean id="webAction" class="web.action.WebAction">

<property name="relationDao" ref="relationDaoImp"></property>

</bean>

18、主界面左侧菜单栏的制作

(1)在struts.xml增加index action

     <action name="index" method="index" class="webAction">

     <result type="json" name="success">

      <param name="root">s</param>

        </result>

     </action>

(2)在WebAction中增加index方法

private int id;

    private RelationDao relationDao;

private JSONObject s;

 

public int getId() {

return id;

}

 

public void setId(int id) {

this.id = id;

}

 

public RelationDao getRelationDao() {

return relationDao;

}

 

public void setRelationDao(RelationDao relationDao) {

this.relationDao = relationDao;

}

 

public JSONObject getS() {

return s;

}

 

public void setS(JSONObject s) {

this.s = s;

}

public String index() throws Exception {

 System.out.println("开始"+id );

List<String> listp = relationDao.findPmenu(id);//父菜单

List<SysMenu> list = relationDao.findRelation(id);

List<Map<String, Object>> lista = new ArrayList<Map<String, Object>>();

SysMenu menu;

if (list != null && list.size() > 0) {

for (String str : listp) {

Map<String, Object> map = new HashMap<String, Object>();

List<Map<String, Object>> listf = new ArrayList<Map<String, Object>>();

map.put("name", str);

for (SysMenu me : list) {

//menu = relationDao.findMenu(re.getMid());

if (str.equals(me.getName())) {

Map<String, Object> mapr = new HashMap<String, Object>();

mapr.put("functions", me.getFunction());

mapr.put("url", me.getUrl());

listf.add(mapr);

}

}

map.put("list", listf);

lista.add(map);

}

}

s = JSONTools.createJsonObject("data", lista);

return "success";

}

 

 

(3)新建newIndex.jsp

 

<%@ page contentType="text/html; charset=UTF-8"%>

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

<% String loginname = (String) session.getAttribute("loginname");  %>

<% String userId = (String) session.getAttribute("loginid"); %>

<% Integer id= (Integer)session.getAttribute("id"); %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ page isELIgnored="false"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

 

<% String user = (String) session.getAttribute("loginname");

    if(user==null )

   {

     %>

      <script>

  parent.location.href="login.jsp"

     </script>

<%

   }

  %>

<!DOCTYPE html>

<html lang="zh">

<head>

<title>“我的课堂”管理系统平台</title>

<meta charset="UTF-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />

<meta http-equiv="X-UA-Compatible" content="IE=9" />

 

<link rel="stylesheet" href="css/bootstrap.min.css" />

<link rel="stylesheet" href="css/bootstrap-responsive.min.css" />

<link rel="stylesheet" href="css/matrix-style.css" />

<link rel="stylesheet" href="css/matrix-media.css" />

<link href="font-awesome/css/font-awesome.css" rel="stylesheet" />

<script src="js/jquery.min.js"></script>

<script src="http://apps.bdimg.com/libs/html5shiv/3.7/html5shiv.min.js"></script>

<script src="http://apps.bdimg.com/libs/respond.js/1.4.2/respond.min.js"></script>

 

<script src="js/excanvas.min.js"></script>

   <script src="js/jquery.ui.custom.js"></script>

   

<script type="text/javascript">

$(document).ready(function(){

var url="index?id="+<%=id%>;

 login(url);

});

 

 function  login(url){

   $.ajax({

                url: url,

                type: "Get",

                async: false ,

                dataType: "json",

                success: function(data) {

                 for(var i=0;i<data.data.length;i++){

                  var str="<li class='submenu'><a herf='#'><span>"+data.data[i].name+"</span></a><ul>"

                     for(var j=0;j<data.data[i].list.length;j++){

                     str+='<li><a class="menu_a" link="'+data.data[i].list[j].url+'"> '+data.data[i].list[j].functions+'</a></li>'

                     }

                       str+="</ul></li>"

                        document.getElementById("index").innerHTML+=str;

                 }

}

            });

 }

 

 

 function  unLogin(){

 parent.location.href="login.jsp"

//window.location.href = "unLogin";

         }

</script>

</head>

<body onunload="unLogin()">

<div id="header">

<h1>

<a>管理平台</a>

</h1>

</div>

 

<!--top-Header-menu-->

<div id="user-nav" class="navbar navbar-inverse">

<ul class="nav">

<li class="dropdown" id="profile-messages"><a title="" href="#"

data-toggle="dropdown" data-target="#profile-messages"

class="dropdown-toggle"> <i class="icon icon-user"></i>  <span

class="text">欢迎你,<%=loginname%>

</span>  <b class="caret"></b>

</a>

<ul class="dropdown-menu">

<li><a class="menu_a" link="allActivity.action"><i

class="icon-check"></i> 我的发布</a></li>

<li class="divider"></li>

<li><a class="menu_a" onclick="unLogin(this)"><i

class="icon-key"></i> 退出系统</a></li>

</ul></li>

 

</ul>

</div>

<!--close-top-Header-menu-->

 

<div id="search"></div>

<div id="sidebar" style="OVERFLOW-Y: auto; OVERFLOW-X:hidden;">

<ul id="index">

<c:if test="${sessionScope.power == 4 }">

<li class="submenu"><a href="#"> <i class="icon icon-lock"></i>

<span>权限管理</span> 

</a>

<ul>

    <li><a class="menu_a" link="relationList.jsp"><i

class="icon icon-caret-right"></i>权限列表</a></li>

</ul>

</li>

</c:if>

 

</ul>

</div>

<div id="content">

<div id="content-header">

<div id="breadcrumb">

<a href="newIndex.jsp" title="返回主页" class="tip-bottom"><i

class="icon-home"></i> Home</a>

</div>

</div>

<iframe src="allActivity.action?" id="iframe-main" style="width:100%;"></iframe>

</div>

 

<!--end-main-container-part-->

 

<script src="js/bootstrap.min.js"></script>

 

<script src="js/matrix.js"></script>

 

 

<script type="text/javascript">

//初始化相关元素高度

function init() {

$("body").height($(window).height() - 80);

$("#iframe-main").height($(window).height() - 90);

$("#sidebar").height($(window).height() - 50);

}

 

/**/$(function() {

init();

$(window).resize(function() {

init();

});

});

 

function goPage(newURL) {

if(newURL != "") {

if(newURL == "-") {

}

else {

document.location.href = newURL;

}

}

}

function resetMenu() {

document.gomenu.selector.s // if url is empty, skip the menu dividers and reset the menu selection to default

            electedIndex = 2;

}

</script>

 

</body>

 

</html>

19、对activity表和activity_type 表创建反向工程

 

因为id是自增字段,所以选择生成方式native

20、在applicationContext.xml中增加两个hbm文件的描述

<value>org/model/Activity.hbm.xml</value>     <value>org/model/ActivityType.hbm.xml</value>

21、新建ActivityDao接口

package web.dao;

import java.util.List;

import org.model.Activity;

public interface ActivityDao {

public double pageSum(int i); //分页

public void addActivity(Activity activity);//增加活动

    public List<Activity> allActivity(int i, int j);

}

22、新建ActivityDaoImp类实现ActivityDao中的方法

package web.dao.imp;

import java.util.HashSet;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import web.dao.ActivityDao;

import org.model.Activity;

import org.model.ActivityType;

import org.model.Address;

import org.model.Teacher;

public class ActivityDaoImp extends HibernateDaoSupport implements ActivityDao {

// 页数

@Override

public double pageSum(int i) {

Session session = getSession();

Query query;

if (i == 0) {

query = session

.createQuery("select count(*) from Activity where r_status!=-1");

} else {

query = session

.createQuery("select count(*) from Activity where r_status!=-1 and r_type=?");

query.setParameter(0, ++i);

}

Long b = (Long) query.uniqueResult();

double a = b;

session.close();

return a;

}

// 查询所有活动

@SuppressWarnings("unchecked")

@Override

public List<Activity> allActivity(int i, int k) {

List<Teacher> list = null;

List<ActivityType> list2 = null;

List<Address> list3 = null;

Session ssn = getSession();

Query query;

if (k == 0) {

query = ssn

.createQuery("from Activity where RStatus!=-1 order by RId desc");

} else {

query = ssn

.createQuery("from Activity where RStatus!=-1 and RType=? order by RId desc");

query.setParameter(0, ++k);

}

query.setFirstResult(i);

query.setMaxResults(7);

List<Activity> l = query.list();

int len = l.size();

if (len != 0) {

String[] values1 = new String[len];

Object[] values2 = new Object[len];

Object[] values3 = new Object[len];

StringBuilder sb = new StringBuilder();

StringBuilder sb2 = new StringBuilder();

StringBuilder sb3 = new StringBuilder();

for (int j = 0; j < len; j++) {

values1[j] = l.get(j).getRTId();

values2[j] = l.get(j).getRType();

values3[j] = l.get(j).getRAddress();

if (j != len - 1) {

sb.append("?,");

sb2.append("?,");

sb3.append("?,");

} else {

sb.append("?");

sb2.append("?");

sb3.append("?");

}

}

// 这里的list查询出来的应该包含TeacherId吧

list = getHibernateTemplate().find(

"FROM Teacher t WHERE t.id.TTeacherId IN (" + sb.toString()+ ")", values1);

list2 = getHibernateTemplate().find(

"FROM ActivityType t WHERE t.aid IN (" + sb2.toString()+ ")", values2);

list3 = getHibernateTemplate().find(

"FROM Address t WHERE t.id IN (" + sb3.toString() + ")",values3);

for (Activity a : l) {

for (Teacher entity : list)

if (a.getRTId().equals(entity.getId().getTTeacherId())) {

a.setTeacher(entity);

break;

}

for (ActivityType entity1 : list2)

if (a.getRType() == entity1.getAid()) {

a.setActtype(entity1);

break;

}

for (Address entity2 : list3) if(a.getRAddress().equals(entity2.getId())) {

a.setAddress(entity2);

break;

}

}

}

return l;

}

// 添加活动

@Override

public void addActivity(Activity activity) {

// TODO Auto-generated method stub

this.getHibernateTemplate().save(activity);

}

}

23、发布活动的制作

点击发布活动跳转到发布活动的界面

(1)在struts.xml增加action punishActivity

<action name="publishActivity" class="webAction" method="publishActivity">

<result name="success">/publishActivity.jsp</result>

</action>

(2)在webAction中增加publishActivity方法

private List<Teacher> teacherlist = new ArrayList<Teacher>();

public List<Teacher> getTeacherlist() {

return teacherlist;

}

public void setTeacherlist(List<Teacher> teacherlist) {

this.teacherlist = teacherlist;

}

public String publishActivity() {

teacherlist = teacherDao.allTeacher();

addresslist = addressDao.allAddress();

return "success";

}

(3)新建publishActivity.jsp

<%@page contentType="text/html; charset=UTF-8"%>

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ page isELIgnored="false"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html>

<html>

 

<!-- Mirrored from www.zi-han.net/theme/hplus/article.html by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 20 Jan 2016 14:19:47 GMT -->

 

<head>

<meta charset="UTF-8">

<title>发布活动</title>

<link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet">

<link href="jules/css/font-awesome.min93e3.css?v=4.4.0" rel="stylesheet">

<link href="jules/css/animate.min.css" rel="stylesheet">

<link href="jules/css/style.min862f.css?v=4.1.0" rel="stylesheet">

<link href="jules/css/bootstrap.min14ed.css?v=3.3.6" rel="stylesheet">

<link href="jules/css/font-awesome.min93e3.css?v=4.4.0" rel="stylesheet">

<link href="css/bootstrap-datetimepicker.css" rel="stylesheet">

<link href="jules/css/animate.min.css" rel="stylesheet">

<link href="jules/css/plugins/chosen/chosen.css" rel="stylesheet">

<link href="jules/css/style.min862f.css?v=4.1.0" rel="stylesheet">

<link href="jules/css/plugins/iCheck/custom.css" rel="stylesheet">

<link href="jules/css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css" rel="stylesheet">

<link rel="stylesheet" href="css/select2.css" />

 

<script type="text/javascript" src="js/jquery-1.7.2.js"></script>

 

<style>

th {

background-color: #F5F5F6;

}

</style>

<script type="text/javascript">

// 判断图片大小和格式

function getPhotoSize(obj) {

photoExt = obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();

if(photoExt != '.jpg' && photoExt != '.png' && photoExt != '.jpeg') {

alert("文件格式错误!");

var nf = obj.cloneNode(true);

nf.value = '';

obj.parentNode.replaceChild(nf, obj);

return false;

}

var fileSize = 0;

var isIE = /msie/i.test(navigator.userAgent) && !window.opera;

if(isIE && !obj.files) {

var filePath = obj.value;

var fileSystem = new ActiveXObject("Scripting.FileSystemObject");

var file = fileSystem.GetFile(filePath);

fileSize = file.Size;

} else {

fileSize = obj.files[0].size;

}

fileSize = Math.round(fileSize / 1024 * 100) / 100; //µ¥Î»ÎªKB

if(fileSize > 2048) {

alert("不接受超过2m的图片!");

return false;

}

}

function a(){

alert("weaw");

windows.location.href="xuanTeacher";

}

</script>

</head>

 

<body class="gray-bg">

<div class="wrapper wrapper-content  animated fadeInRight article">

<div class="row">

<div class="col-lg-10 col-lg-offset-1">

<div class="ibox">

<div class="ibox-content">

<div class="ibox float-e-margins">

<div class="text-center">

<h3>发布活动详情</h3>

</div>

<div class="ibox-content">

<form action="addActivity" name="cform" method="post" enctype="multipart/form-data" id="activityFrom">

<table class="table table-bordered" style="height: auto;">

 <tbody>

<tr>

<th>活动形式</th>

<td>

    <select class="form-control " name="item" id="acitem" required="required">

<% String user = (String) session.getAttribute("loginname");

                                                        if("博雅读书".equals(user)){

%>

<option value="1">书评报告会</option>

<option value="2">读书沙龙</option>

<option value="3">书评撰写</option>

 <input  name="type" type="hidden" value=2>

<%

}

else if("博雅心情".equals(user)){

%>

 

<option value="4">理论教学</option>

<option value="5">随堂训练</option>

<option value="6">实践锻炼</option>

 <input  name="type" type="hidden" value=3>

<%

}

else if("博雅实践".equals(user)){

%>

 

<option value="7">社会实践</option>

<option value="8">志愿服务</option>

 <input  name="type" type="hidden" value=4>

<%

}

else if("博雅讲坛".equals(user)){

%>

 

<option value="9">浙江人文大讲堂之江分讲堂</option>

<option value="10">之江大讲堂</option>

<option value="11">师友讲堂</option>

<option value="12">院长下午茶,书记有约</option>

<option value="13">主题沙龙</option>

<option value="21">新青年月谈</option>

<option value="22">梦湖讲堂</option>

<option value="23">青春有约</option>

 <input  name="type" type="hidden" value=5>

<%

}

else if("博雅修身".equals(user)){

                                                    %>

                                                  

<option value="14">兴趣社团</option>

<option value="15">阳光长跑</option>

<option value="16">文明寝室建设</option>

<option value="17">体育文化活动</option>

   <input  name="type" type="hidden" value=6>

<%

}

else if("博雅视野".equals(user)){

%>

<option value="18">出国深造</option>

<option value="19">交换学习</option>

<option value="20">游学访学</option>

   <input  name="type" type="hidden" value=7>

<%

}

%>

</select>

</td>

<th>活动名称</th>

<td><input class="form-control" type="text" name="name" required="required"></td>

</tr>

 

<tr>

<th>起始时间</th>

<td><input required="required" class="laydate-icon form-control layer-date" name="startTime1" placeholder="开始时间" onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">

</td>

<th>结束时间</th>

<td><input required="required" class="laydate-icon form-control layer-date" name="endTime1" placeholder="结束时间" onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">

</td>

</tr>

 

<tr>

<th>起始时间2</th>

<td><input required="required" class="laydate-icon form-control layer-date" name="startTime2" placeholder="开始时间" onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">

</td>

<th>结束时间2</th>

<td><input required="required" class="laydate-icon form-control layer-date" name="endTime2" placeholder="结束时间" onclick="laydate({istime: true, format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(0)})">

</td>

</tr>

 

<tr>

<th>可获得学分</th>

<td><input required="required" class="form-control " type="text" name="credit"></td>

<th>活动人数</th>

<td><input required="required" class="form-control " type="text" name="peopleNum"></td>

</tr>

 

<tr>

<th>参与导师</th>

<td>

 <input type="text"  class="form-control " id="testInput" />  

                                                  <input type="hidden"  name="fkTeacherId" id="ruleOrgCode" required="required" />

</td>

<th>举办学院</th>

<td>

<select class="form-control " name="college" id="college" required="required">

<option value="1">全部学院</option>

<option value="2">之江学院</option>

<option value="3">信息学院</option>

<option value="4">人文学院</option>

<option value="5">商学院</option>

<option value="6">设计学院</option>

<option value="7">外国语学院</option>

<option value="8">机械学院</option>

<option value="9">中旅学院</option>

<option value="10">建筑学院</option>

<option value="11">理学院</option>

<option value="12">创新创业学院</option>

</select>

</td>

</tr>

 

<tr>

<th>活动地址</th>

<td>

<select class="form-control " name="addressId" required="required">

 <c:forEach items="${addresslist}" var="res">

<option value="${res.id}">${res.name}</option>

</c:forEach>

</select>

</td>

<th>指派学院</th>

<td>

<select class="form-control " name="zdcollege" id="college" required="required">

<option value="1">全部学院</option>

<option value="2">商学院</option>

<option value="3">信息工程学院</option>

<option value="4">人文学院</option>

<option value="5">机械工程学院</option>

<option value="6">外国语学院</option>

<option value="7">建筑学院</option>

<option value="8">设计学院</option>

<option value="9">理学院</option>

<option value="10">中旅学院</option>

</select>

</td>

</tr>

<tr>

<th>活动主图片</th>

<td class="uploader white">

<input required="required" type="file" name="file1" accept="image/*" onchange="getPhotoSize(this)" size=40"/>

</td>

</tr>

<tr>

<th>活动详情</th>

<td colspan="3">

<textarea required="required" class="form-control " rows="3" type="text" id="desc" name="desc"></textarea>

</td>

</tr>

</tbody>

</table>

 

<div class="form-group" style="height: auto">

<input class="btn btn-sm btn-primary m-t-n-xs pull-right" style="margin-left: 20px" type="submit" value="取消 " />

<input id="submit" class="btn btn-sm btn-primary m-t-n-xs pull-right" type="submit" value="确定 " />

</div>

</form>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<script type="text/javascript">

 

var arraytea=new Array();

 

<c:forEach var="res" items="${teacherlist}">

  arraytea.push({name:'${res.TName}'+'>>'+'${res.id.TTeacherId}',code:'${res.id.TTeacherId}'});

</c:forEach>

 

      //  alert(datas);

      //   alert(arraytea);

        /**

        * 搜索下拉列表

        **/  

        $('#testInput').bind('input propertychange',  

            function() {  

                var items = inputChange();//搜索数据并获取搜索结果  

                if(items != undefined){  

                    _initItems(items);  

            }  

              

        });  

  

  

        //1:搜索数据  

        var inputChange = function() {  

            var inputValue = $('#testInput').val();  

              

            if(inputValue != "" && inputValue.indexOf("000") == -1){  

                var matcher = new RegExp(inputValue, "i");  

                return $.grep(arraytea,  

                    function(value) {  

                    return matcher.test(value.name);  

                });  

            }else if(inputValue != "" && inputValue.indexOf("000") != -1){  

                var matcher = new RegExp(inputValue, "i");  

                return $.grep(arraytea,  

                    function(value) {  

                    return matcher.test(value.code);  

                });  

            }  

              

        };  

        var maxFontNumber = 0;//最大字数  

        var suggestContainer = $('<div></div>'); //创建一个子<div>  

        suggestContainer.attr('id', "testInput-suggest");  

        suggestContainer.attr('tabindex', '0');  

        suggestContainer.hide();  

                  

        //2:初始化搜索到的数据进行显示  

        var _initItems = function(items) {  

            $('#ruleOrgCode').val("");  

            suggestContainer.empty();  

            for (var i = 0; i < items.length; i++) {  

                if(items[i].name.length > maxFontNumber){  

                    maxFontNumber = items[i].name.length;  

                }  

                var suggestItem = $('<div></div>'); //创建一个子<div>  

                suggestItem.attr('code', items[i].code);  

                suggestItem.append(items[i].name);  

                suggestItem.css({  

                    'padding':'3px',//item间距  

                    'white-space':'nowrap',  

                    'cursor': 'pointer',  

                    'background-color': 'RGB(199,237,204)',//默认背景颜色  

                    'color': '#000000'//默认字体颜色  

                });  

                suggestItem.bind("mouseover",  

                function() {  

                    $(this).css({  

                        'background-color': '#C9302C',//选中背景颜色  

                        'color': '#ffffff'//选中字体颜色  

                    });  

                });  

                suggestItem.bind("mouseout",  

                function() {  

                    $(this).css({  

                        'background-color': 'RGB(199,237,204)',//默认背景颜色  

                        'color': '#000000'//默认字体颜色  

                    });  

                });  

                suggestItem.bind("click", showClickTextFunction);//选中后处理数据  

                //suggestItem.bind("click", itemSelectFunction);  

                suggestItem.appendTo(suggestContainer);  

                suggestContainer.appendTo(document.body);  

            }  

            suggestContainer.removeAttr("style");  

            suggestContainer.css({  

                'border': '1px solid #ccc',  

                'max-height': '200px',  

                'top': $('#testInput').offset().top + $('#testInput').outerHeight(),  

                'left': $('#testInput').offset().left,  

                'width': 12*maxFontNumber + 2 * 3 + 30,  

                'position': 'absolute',  

                'font-size': '12px' ,//默认字体大小  

                'font-family':'Arial',  

                'z-index': 99999,  

                'background-color': '#FFFFFF',  

                'overflow-y': 'auto',  

                'overflow-x': 'hidden',  

                'white-space':'nowrap'  

  

            });  

            maxFontNumber = 0;  

            suggestContainer.show();  

        };  

          

        //3.选中后处理数据  

        var showClickTextFunction = function() {  

            //alert(this.innerText + "---" + this.getAttribute("code"));  

            $('#testInput').val(this.innerText);  

            $('#ruleOrgCode').val(this.getAttribute("code"));  

            suggestContainer.hide();  

        };  

    </script>  

<script src="jules/js/jquery.min.js?v=2.1.4 "></script>

<script src="js/jquery-ui.js "></script>

<script src="jules/js/bootstrap.min.js?v=3.3.6 "></script>

<script src="js/bootstrap-datetimepicker.js "></script>

<script src="js/bootstrap-datetimepicker.zh-CN.js "></script>

<script src="jules/js/content.min.js?v=1.0.0 "></script>

<script src="jules/js/layer/laydate/laydate.js "></script>

<script src="jules/js/plugins/chosen/chosen.jquery.js "></script>

<script src="jules/js/plugins/cropper/cropper.min.js "></script>

<script src="jules/js/demo/form-advanced-demo.min.js "></script>

<script src="jules/js/plugins/iCheck/icheck.min.js "></script>

</body>

 

<!-- Mirrored from www.zi-han.net/theme/hplus/article.html by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 20 Jan 2016 14:19:47 GMT -->

</html>

24、新增活动的制作

点击确定按钮,无法成功发布活动,因为在publishActivity.jsp的表单的action为addActivity,缺少addActivity action

(1)在struts.xml中新增action addActivity

<action name="addActivity" class="webAction" method="addActivity">

<result name="success"  type="chain">allActivity</result>

</action>

(2)在WebAction中增加addActivity方法

private File file1;

private String file1FileName;

private int zdcollege;

private int type;

private int item;

private double credit;

private String fkTeacherId;

private Timestamp createTime;

private Timestamp startTime1;

private Timestamp endTime1;

private Timestamp startTime2;

private Timestamp endTime2;

private Integer peopleNum;

private String desc;

private String college;

public File getFile1() {

return file1;

}

 

public void setFile1(File file1) {

this.file1 = file1;

}

 

public String getFile1FileName() {

return file1FileName;

}

 

public void setFile1FileName(String file1FileName) {

this.file1FileName = file1FileName;

}

 

public int getZdcollege() {

return zdcollege;

}

 

public void setZdcollege(int zdcollege) {

this.zdcollege = zdcollege;

}

 

public int getType() {

return type;

}

 

public void setType(int type) {

this.type = type;

}

 

public int getItem() {

return item;

}

 

public void setItem(int item) {

this.item = item;

}

 

public double getCredit() {

return credit;

}

 

public void setCredit(double credit) {

this.credit = credit;

}

 

public String getFkTeacherId() {

return fkTeacherId;

}

 

public void setFkTeacherId(String fkTeacherId) {

this.fkTeacherId = fkTeacherId;

}

 

public Timestamp getCreateTime() {

return createTime;

}

 

public void setCreateTime(Timestamp createTime) {

this.createTime = createTime;

}

 

public Timestamp getStartTime1() {

return startTime1;

}

 

public void setStartTime1(Timestamp startTime1) {

this.startTime1 = startTime1;

}

 

public Timestamp getEndTime1() {

return endTime1;

}

 

public void setEndTime1(Timestamp endTime1) {

this.endTime1 = endTime1;

}

 

public Timestamp getStartTime2() {

return startTime2;

}

 

public void setStartTime2(Timestamp startTime2) {

this.startTime2 = startTime2;

}

 

public Timestamp getEndTime2() {

return endTime2;

}

 

public void setEndTime2(Timestamp endTime2) {

this.endTime2 = endTime2;

}

 

public Integer getPeopleNum() {

return peopleNum;

}

 

public void setPeopleNum(Integer peopleNum) {

this.peopleNum = peopleNum;

}

 

public String getDesc() {

return desc;

}

 

public void setDesc(String desc) {

this.desc = desc;

}

 

public String getCollege() {

return college;

}

 

public void setCollege(String college) {

this.college = college;

}

 

public String addActivity() throws IOException {

Activity activity = new Activity();

activity.setRName(this.getName());

activity.setRZdcollege(this.getZdcollege());

activity.setRType(this.getType());

activity.setRItem(this.getItem());

activity.setRCredit(this.getCredit());

activity.setRMaximum(this.getPeopleNum());

activity.setRStartTime(startTime1);

activity.setREndTime(endTime1);

activity.setRStartTimeTwo(startTime2);

activity.setREndTimeTwo(endTime2);

//System.out.println("newActivity"+this.getFkTeacherId());

if (teacherDao.isExist(this.getFkTeacherId()) != null)

activity.setRTId(this.getFkTeacherId());

else

activity.setRTId("770066");

activity.setRAddress(this.getAddressId());

activity.setRIntroduction(this.getDesc());

activity.setRNowmum(0);

activity.setRPopular(0);

activity.setRSearchnum(0);

activity.setRClicknum(0);

activity.setRTu(5);

activity.setRRecsign(0);// 初始时为不推荐活动

switch (this.getCollege()) {

case "1":

activity.setRCollege("全部学院");

break;

case "2":

activity.setRCollege("之江学院");

break;

case "3":

activity.setRCollege("信息学院");

break;

case "4":

activity.setRCollege("人文学院");

break;

case "5":

activity.setRCollege("商学院");

break;

case "6":

activity.setRCollege("设计学院");

break;

case "7":

activity.setRCollege("外国语学院");

break;

case "8":

activity.setRCollege("机械学院");

break;

case "9":

activity.setRCollege("中旅学院");

break;

case "10":

activity.setRCollege("建筑学院");

break;

case "11":

activity.setRCollege("理学院");

break;

case "12":

activity.setRCollege("创新创业学院");

break;

default:

break;

}

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateNowStr = sdf.format(new Date());//string转时间

activity.setRCreateTime(Timestamp.valueOf(dateNowStr));

activity.setRChangeTime(Timestamp.valueOf(dateNowStr));

activity.setRStatus(2);

// 上传图片

if (file1 != null) {

String path = ServletActionContext.getRequest().getRealPath(

"/image");

// 获取后缀名字

String hz = file1FileName.substring(file1FileName.lastIndexOf("."));

String newfilename = UUID.randomUUID().toString() + hz;// uuid不重复;

OutputStream os = new FileOutputStream(new File(path, newfilename));//准备好一个输出对象

String h = "http://localhost:8080/SDSYwZDL/image/" + newfilename;//图片的路径

activity.setRPicture(h);

InputStream is = new FileInputStream(file1);

byte[] buf = new byte[1024];

int length = 0;

while (-1 != (length = is.read(buf))) {

os.write(buf, 0, length);

}

PhotoYsImp p = new PhotoYsImp();

p.photoYs(path + "/" + newfilename, 400, 400);// 对图片进行压缩。

is.close();

os.close();

} else {

activity.setRPicture("https://sdsy.zzjc.edu.cn/SDSYw/image/1.jpg");

}

activityDao.addActivity(activity);

return "success";

}

 

25、在web.util中增加PhotoYsImp

package web.util;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class PhotoYsImp {

private Image img;

private int width;

private int height;

private String path;

public void photoYs(String fileName, int w, int h) throws IOException {

path = fileName;

File file = new File(fileName);// 锟斤拷锟斤拷锟侥硷拷

img = ImageIO.read(file); // 锟斤拷锟斤拷Image锟斤拷锟斤拷

width = img.getWidth(null); // 锟矫碉拷源图锟斤拷

height = img.getHeight(null); // 锟矫碉拷源图锟斤拷

 

if (width / height > w / h) {

resizeByWidth(w);

} else {

resizeByHeight(h);

}

}

public void resizeByWidth(int w) throws IOException {

int h = (int) (height * w / width);

resize(w, h);

}

public void resizeByHeight(int h) throws IOException {

int w = (int) (width * h / height);

resize(w, h);

}

 

public void resize(int w, int h) throws IOException {

// SCALE_SMOOTH 鍘嬬缉鏈哄埗

BufferedImage image = new BufferedImage(w, h,

BufferedImage.SCALE_SMOOTH);

image.getGraphics().drawImage(img, 0, 0, w, h, null);

File destFile = new File(path);

FileOutputStream out = new FileOutputStream(destFile);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

}

 

}

26、运行项目可以成功发布活动

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值