中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SSH如何實現信息發布管理

發布時間:2021-10-19 09:34:23 來源:億速云 閱讀:126 作者:小新 欄目:web開發

這篇文章主要介紹了SSH如何實現信息發布管理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

信息發布的開發,還是遵循從entity->dao->service->action->config的方式進行。

這里面有幾個知識點:

(1)對于表單中的大數據量文本域,在映射文件(*.hbm.xml)中其類型應使用text。

例如:Java文件中

private String content;

在Hibernate映射文件中

<property name="content" column="content" type="text"></property>

(2)對于Date、Calendar、Timstamp的理解

Java文件中

private Timestamp createTime;

在Hibernate映射文件中

<property name="createTime" column="create_time" type="java.sql.Timestamp"></property>

(3)抽取BaseService

(4)在新增頁面,顯示當前時間

Java代碼

info = new Info();
info.setCreateTime(new Timestamp(new Date().getTime())); // 是為了在頁面中顯示出當前時間

在JSP頁面中顯示時間的struts標簽

<s:date name="createTime" format="yyyy-MM-dd HH:mm"/>

(5)在HTML標簽的id值 結合數據庫中主鍵 的使用,使得HTML標簽的id值不會重復

1、entity層

Info.java

package com.rk.tax.entity;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.Map;

public class Info implements Serializable {
	private String infoId;
	private String type;
	private String source;
	private String title;
	private String content;
	private String memo;
	private String creator;
	private Timestamp createTime;
	private String state;
	
	//狀態
	public static String INFO_STATE_PUBLIC = "1";//發布
	public static String INFO_STATE_STOP = "0";//停用
	
	//信息分類 
	public static String INFO_TYPE_TZGG = "tzgg";
	public static String INFO_TYPE_ZCSD = "zcsd";
	public static String INFO_TYPE_NSZD = "nszd";
	public static Map<String, String> INFO_TYPE_MAP;
	static{
		INFO_TYPE_MAP = new HashMap<String, String>();
		INFO_TYPE_MAP.put(INFO_TYPE_TZGG, "通知公告");
		INFO_TYPE_MAP.put(INFO_TYPE_ZCSD, "政策速遞");
		INFO_TYPE_MAP.put(INFO_TYPE_NSZD, "納稅指導");
	}
	
	// {{
	public String getInfoId() {
		return infoId;
	}
	public void setInfoId(String infoId) {
		this.infoId = infoId;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getSource() {
		return source;
	}
	public void setSource(String source) {
		this.source = source;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getMemo() {
		return memo;
	}
	public void setMemo(String memo) {
		this.memo = memo;
	}
	public String getCreator() {
		return creator;
	}
	public void setCreator(String creator) {
		this.creator = creator;
	}
	public Timestamp getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Timestamp createTime) {
		this.createTime = createTime;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
	// }}
	
}

Info.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.rk.tax.entity" auto-import="true">
	<class name="Info" table="T_Info">
		<id name="infoId" column="info_id" type="java.lang.String" length="32">
			<generator class="uuid.hex"></generator>
		</id>
		<property name="type" column="type" type="java.lang.String" length="10"></property>
		<property name="source" column="source" type="java.lang.String" length="50"></property>
		<property name="title" column="title" type="java.lang.String" length="100"></property>
		<property name="content" column="content" type="text"></property>
		<property name="memo" column="memo" type="java.lang.String" length="200"></property>
		<property name="creator" column="creator" type="java.lang.String" length="10"></property>
		<property name="createTime" column="create_time" type="java.sql.Timestamp" length="19"></property>
		<property name="state" column="state" type="java.lang.String" length="1"></property>
	</class>

</hibernate-mapping>

2、dao層

InfoDao.java

package com.rk.tax.dao;

import com.rk.core.dao.BaseDao;
import com.rk.tax.entity.Info;

public interface InfoDao extends BaseDao<Info> {

}

InfoDaoImpl.java

package com.rk.tax.dao.impl;


import com.rk.core.dao.impl.BaseDaoImpl;
import com.rk.tax.dao.InfoDao;
import com.rk.tax.entity.Info;

public class InfoDaoImpl extends BaseDaoImpl<Info> implements InfoDao {

}

關于BaseDao和BaseDaoImpl可以查看 http://lsieun.blog.51cto.com/9210464/1835776

3、service層

這里要抽取一個通用的Service,即BaseService。

BaseService.java

package com.rk.core.service;

import java.io.Serializable;
import java.util.List;

public interface BaseService<T> {
	//新增
	public void save(T entity);
	//更新
	public void update(T entity);
	//根據id刪除
	public void delete(Serializable id);
	//根據id查找
	public T findById(Serializable id);
	//查找列表
	public List<T> findAll();
}

BaseServiceImpl.java 這里雖然通過baseDao完成了相應的操作,但是還是應該給baseDao提供一個具體的實例變量才能執行操作,否則會報null異常。在這個項目中,所有的dao、service都是由Spring的IOC容器進行管理,那么應該如何讓Spring的IOC容器為BaseServiceImpl注入baseDao呢?答案:通過BaseServiceImpl的子類完成注入。

package com.rk.core.service.Impl;

import java.io.Serializable;
import java.util.List;

import com.rk.core.dao.BaseDao;
import com.rk.core.service.BaseService;

public class BaseServiceImpl<T> implements BaseService<T> {
	private BaseDao<T> baseDao;
	public void setBaseDao(BaseDao<T> baseDao) {
		this.baseDao = baseDao;
	}
	
	public void save(T entity) {
		baseDao.save(entity);
	}

	public void update(T entity) {
		baseDao.update(entity);
	}

	public void delete(Serializable id) {
		baseDao.delete(id);
	}

	public T findById(Serializable id) {
		return baseDao.findById(id);
	}

	public List<T> findAll() {
		return baseDao.findAll();
	}

}

InfoService.java

package com.rk.tax.service;

import com.rk.core.service.BaseService;
import com.rk.tax.entity.Info;

public interface InfoService extends BaseService<Info> {

}

InfoServiceImpl.java 注意:這里通過對infoDao的注入,來同時完成baseDao的注入。

package com.rk.tax.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.rk.core.service.Impl.BaseServiceImpl;
import com.rk.tax.dao.InfoDao;
import com.rk.tax.entity.Info;
import com.rk.tax.service.InfoService;

@Service("infoService")
public class InfoServiceImpl extends BaseServiceImpl<Info> implements InfoService {
	private InfoDao infoDao;
	
	@Resource
	public void setInfoDao(InfoDao infoDao) {
		setBaseDao(infoDao);
		this.infoDao = infoDao;
	}
}

4、action層

InfoAction.java

package com.rk.tax.action;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;
import com.rk.core.action.BaseAction;
import com.rk.tax.entity.Info;
import com.rk.tax.service.InfoService;

@Controller("infoAction")
@Scope("prototype")
public class InfoAction extends BaseAction {
	
	/*****1、業務數據*****/
	private List<Info> infoList;
	private Info info;
	
	/*****2、業務實現類*****/
	@Resource
	private InfoService infoService;
	
	/*****3、響應JSP頁面的操作*****/
	//列表頁面
	public String listUI(){
		//加載分類集合
		ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);
		infoList = infoService.findAll();
		return "listUI";
	}
	//跳轉到新增頁面
	public String addUI(){
		//加載分類集合
		ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);
		info = new Info();
		info.setCreateTime(new Timestamp(new Date().getTime())); // 是為了在頁面中顯示出當前時間
		return "addUI";
	}
	
	//保存新增
	public String add(){
		if(info != null){
			infoService.save(info);
		}
		return "list";
	}
	
	//跳轉到編輯頁面
	public String editUI(){
		//加載分類集合
		ActionContext.getContext().getContextMap().put("infoTypeMap", Info.INFO_TYPE_MAP);
		if(info != null && info.getInfoId() != null){
			info = infoService.findById(info.getInfoId());
		}
		return "editUI";
	}
	
	//保存編輯
	public String edit(){
		if(info != null){
			infoService.update(info);
		}
		return "list";
	}
	
	//刪除
	public String delete(){
		if(info != null && info.getInfoId() != null){
			infoService.delete(info.getInfoId());
		}
		return "list";
	}
	
	//批量刪除
	public String deleteSelected(){
		if(selectedRow != null){
			for(String id : selectedRow){
				infoService.delete(id);
			}
		}
		return "list";
	}
	
	//異步發布信息
	public void publicInfo(){
		try {
			if(info != null && info.getInfoId()!= null){
				//1、更新信息狀態
				Info temp = infoService.findById(info.getInfoId());
				temp.setState(info.getState());
				infoService.update(temp);
				
				//2、輸出更新結果
				HttpServletResponse response = ServletActionContext.getResponse();
				response.setContentType("text/html");
				ServletOutputStream outputStream = response.getOutputStream();
				outputStream.write("更新狀態成功".getBytes("utf-8"));
				outputStream.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	// {{
	public List<Info> getInfoList() {
		return infoList;
	}
	public void setInfoList(List<Info> infoList) {
		this.infoList = infoList;
	}
	public Info getInfo() {
		return info;
	}
	public void setInfo(Info info) {
		this.info = info;
	}
	// }}
}

5、config

(1)entity層配置

就是Hibernate的映射文件

(2)dao層配置,就是將dao注入到Spring的IOC容器中

<bean id="infoDao" class="com.rk.tax.dao.impl.InfoDaoImpl" parent="baseDao"></bean>

(3)service層配置,就是將service注入到Spring的IOC容器中

	<!-- 開啟注解掃描 -->
	<context:component-scan base-package="com.rk.tax.service.impl"></context:component-scan>

(4)action層配置,一是將action注入到Spring的IOC容器中,二是將action在struts中進行url的映射

(5)最后保存所有的配置都匯總到applicationContext和struts.xml中

6、前臺JSP頁面

6.1、listUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>信息發布管理</title>
    <script type="text/javascript">
      	//全選、全反選
		function doSelectAll(){
			// jquery 1.6 前
			//$("input[name=selectedRow]").attr("checked", $("#selAll").is(":checked"));
			//prop jquery 1.6+建議使用
			$("input[name=selectedRow]").prop("checked", $("#selAll").is(":checked"));		
		}
        //新增
        function doAdd(){
        	document.forms[0].action = "${basePath}/tax/info_addUI.action";
        	document.forms[0].submit();
        }
        //編輯
        function doEdit(id){
            document.forms[0].action = "${basePath}/tax/info_editUI.action?info.infoId="+id;
        	document.forms[0].submit();
        }
        //刪除
        function doDelete(id){
        	document.forms[0].action = "${basePath}/tax/info_delete.action?info.infoId="+id;
        	document.forms[0].submit();
        }
        //批量刪除
        function doDeleteAll(){
        	document.forms[0].action = "${basePath}/tax/info_deleteSelected.action";
        	document.forms[0].submit();
        }
        //異步發布信息,信息的id及將要改成的信息狀態
  		function doPublic(infoId, state){
  			//1、更新信息狀態
  			$.ajax({
  				url:"${basePath}/tax/info_publicInfo.action",
  				data:{"info.infoId":infoId,"info.state":state},
  				type:"post",
  				success:function(msg){
  					//2、更新狀態欄、操作攔的顯示值
  					if("更新狀態成功" == msg){
  						if(state == 1){//說明信息狀態已經被改成 發布,狀態欄顯示 發布,操作欄顯示 停用
  							$('#show_'+infoId).html("發布");
  							$('#oper_'+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',0)">停用</a>');
  						}
  						else{
  							$('#show_'+infoId).html("停用");
  							$('#oper_'+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',1)">發布</a>');
  						}
  					}
  					else{
  						alert("更新信息狀態失敗!");
  					}
  				},
  				error:function(){
  					alert("更新信息狀態失敗!");
  				}
  			});
  		}
    </script>
</head>
<body class="rightBody">
<form name="form1" action="" method="post">
    <div class="p_d_1">
        <div class="p_d_1_1">
            <div class="content_info">
                <div class="c_crumbs"><div><b></b><strong>信息發布管理</strong></div> </div>
                <div class="search_art">
                    <li>
                        信息標題:<s:textfield name="info.title" cssClass="s_text" id="infoTitle"  cssStyle="width:160px;"/>
                    </li>
                    <li><input type="button" class="s_button" value="搜 索" onclick="doSearch()"/></li>
                    <li >
                        <input type="button" value="新增" class="s_button" onclick="doAdd()"/>&nbsp;
                        <input type="button" value="刪除" class="s_button" onclick="doDeleteAll()"/>&nbsp;
                    </li>
                </div>

                <div class="t_list" >
                    <table width="100%" border="0">
                        <tr class="t_tit">
                            <td width="30" align="center"><input type="checkbox" id="selAll" onclick="doSelectAll()" /></td>
                            <td align="center">信息標題</td>
                            <td width="120" align="center">信息分類</td>
                            <td width="120" align="center">創建人</td>
                            <td width="140" align="center">創建時間</td>
                            <td width="80" align="center">狀態</td>
                            <td width="120" align="center">操作</td>
                        </tr>
                        <s:iterator value="infoList" status="st">
                            <tr <s:if test="#st.odd"> bgcolor="f8f8f8" </s:if> >
                                <td align="center"><input type="checkbox" name="selectedRow" value="<s:property value='infoId'/>"/></td>
                                <td align="center"><s:property value="title"/></td>
                                <td align="center">
                                	<s:property value="#infoTypeMap[type]"/>	
                                </td>
                                <td align="center"><s:property value="creator"/></td>
                                <td align="center"><s:date name="createTime" format="yyyy-MM-dd HH:mm"/></td>
                                <td id="show_<s:property value='infoId'/>" align="center"><s:property value="state==1?'發布':'停用'"/></td>
                                <td align="center">
                                	<span id="oper_<s:property value="infoId"/>">
                                		<s:if test="state==1">
                                			<a href="javascript:doPublic('<s:property value="infoId" />',0)">停用</a>
                                		</s:if>
                                		<s:else>
                                			<a href="javascript:doPublic('<s:property value="infoId"/>',1)">發布</a>
                                		</s:else>
                                	</span>
                                    <a href="javascript:doEdit('<s:property value='infoId'/>')">編輯</a>
                                    <a href="javascript:doDelete('<s:property value='infoId'/>')">刪除</a>
                                </td>
                            </tr>
                        </s:iterator>
                    </table>
                </div>
            </div>
        <div class="c_pate" >
		<table width="100%" class="pageDown" border="0" cellspacing="0"
			cellpadding="0">
			<tr>
				<td align="right">
                 	總共1條記錄,當前第 1 頁,共 1 頁 &nbsp;&nbsp;
                            <a href="#">上一頁</a>&nbsp;&nbsp;<a href="#">下一頁</a>
					到&nbsp;<input type="text"  onkeypress="if(event.keyCode == 13){doGoPage(this.value);}" min="1"
					max="" value="1" /> &nbsp;&nbsp;
			    </td>
			</tr>
		</table>	
        </div>

        </div>
    </div>
</form>

</body>
</html>

知識點(1):struts中顯示時間的標簽

<s:date name="createTime" format="yyyy-MM-dd HH:mm"/>

知識點(2):判斷與字符串相等

<s:property value="state==1?'發布':'停用'"/>

注意:state的在Java文件中是一個字符串類型

知識點(3):在異步“發布”和“停用”消息的Javascript和HTML標簽中的id值

Javascript部分

        //異步發布信息,信息的id及將要改成的信息狀態
  		function doPublic(infoId, state){
  			//1、更新信息狀態
  			$.ajax({
  				url:"${basePath}/tax/info_publicInfo.action",
  				data:{"info.infoId":infoId,"info.state":state},
  				type:"post",
  				success:function(msg){
  					//2、更新狀態欄、操作攔的顯示值
  					if("更新狀態成功" == msg){
  						if(state == 1){//說明信息狀態已經被改成 發布,狀態欄顯示 發布,操作欄顯示 停用
  							$('#show_'+infoId).html("發布");
  							$('#oper_'+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',0)">停用</a>');
  						}
  						else{
  							$('#show_'+infoId).html("停用");
  							$('#oper_'+infoId).html('<a href="javascript:doPublic(\''+infoId+'\',1)">發布</a>');
  						}
  					}
  					else{
  						alert("更新信息狀態失敗!");
  					}
  				},
  				error:function(){
  					alert("更新信息狀態失敗!");
  				}
  			});
  		}

HTML部分

<td id="show_<s:property value='infoId'/>" align="center"><s:property value="state==1?'發布':'停用'"/></td>
<td align="center">
	<span id="oper_<s:property value="infoId"/>">
		<s:if test="state==1">
			<a href="javascript:doPublic('<s:property value="infoId" />',0)">停用</a>
		</s:if>
		<s:else>
			<a href="javascript:doPublic('<s:property value="infoId"/>',1)">發布</a>
		</s:else>
	</span>
    <a href="javascript:doEdit('<s:property value='infoId'/>')">編輯</a>
    <a href="javascript:doDelete('<s:property value='infoId'/>')">刪除</a>
</td>

6.2、addUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>信息發布管理</title>

    <script>
    	
    </script>
</head>
<body class="rightBody">
<form id="form" name="form" action="${basePath}/tax/info_add.action" method="post" enctype="multipart/form-data">
    <div class="p_d_1">
        <div class="p_d_1_1">
            <div class="content_info">
    <div class="c_crumbs"><div><b></b><strong>信息發布管理</strong>&nbsp;-&nbsp;新增信息</div></div>
    <div class="tableH2">新增信息</div>
    <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >
        <tr>
            <td class="tdBg" width="200px">信息分類:</td>
            <td><s:select name="info.type" list="#infoTypeMap"/></td>
            <td class="tdBg" width="200px">來源:</td>
            <td><s:textfield name="info.source"/></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">信息標題:</td>
            <td colspan="3"><s:textfield name="info.title" cssStyle="width:90%"/></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">信息內容:</td>
            <td colspan="3"><s:textarea id="editor" name="info.content" cssStyle="width:90%;height:160px;" /></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">備注:</td>
            <td colspan="3"><s:textarea name="info.memo" cols="90" rows="3"/></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">創建人:</td>
            <td>
            	<s:property value="#session.SYS_USER.name"/>
            	<s:hidden name="info.creator" value="%{#session.SYS_USER.name}"/>
            </td>
            <td class="tdBg" width="200px">創建時間:</td>
            <td>
             	<s:date name="info.createTime" format="yyyy-MM-dd HH:ss"/>
             	<s:hidden name="info.createTime"/>
            </td>
        </tr>
    </table>
    <!-- 默認信息狀態為 發布 -->
    <s:hidden name="info.state" value="1"/>
    <div class="tc mt20">
        <input type="submit" class="btnB2" value="保存" />
        &nbsp;&nbsp;&nbsp;&nbsp;
        <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />
    </div>
    </div></div></div>
</form>
</body>
</html>

知識點(1):時間的顯示和隱藏字段

<s:property value="#session.SYS_USER.name"/>
<s:hidden name="info.creator" value="%{#session.SYS_USER.name}"/>

注意一點,在使用<s:hidden>時,我使用下面語句是錯誤的,只是因為沒有加%{},因為我認為value中接受的值都是OGNL表達式,但是它沒有正確顯示出來(其實,我認為自己的理解是正確的,至于為什么沒有顯示出來,我不清楚)。

下面是錯誤的寫法:

<s:hidden name="info.creator" value="#session.SYS_USER.name"/>

知識點(2):顯示當前時間和隱藏時間字段

<s:date name="info.createTime" format="yyyy-MM-dd HH:ss"/>
<s:hidden name="info.createTime"/>

知識點(3):默認為“發布”狀態

    <!-- 默認信息狀態為 發布 -->
    <s:hidden name="info.state" value="1"/>

6.3、editUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%@include file="/common/header.jsp"%>
    <title>信息發布管理</title>

    <script>
    	
    </script>
</head>
<body class="rightBody">
<form id="form" name="form" action="${basePath}/tax/info_edit.action" method="post" enctype="multipart/form-data">
    <div class="p_d_1">
        <div class="p_d_1_1">
            <div class="content_info">
    <div class="c_crumbs"><div><b></b><strong>信息發布管理</strong>&nbsp;-&nbsp;修改信息</div></div>
    <div class="tableH2">修改信息</div>
    <table id="baseInfo" width="100%" align="center" class="list" border="0" cellpadding="0" cellspacing="0"  >
        <tr>
            <td class="tdBg" width="200px">信息分類:</td>
            <td><s:select name="info.type" list="#infoTypeMap"/></td>
            <td class="tdBg" width="200px">來源:</td>
            <td><s:textfield name="info.source"/></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">信息標題:</td>
            <td colspan="3"><s:textfield name="info.title" cssStyle="width:90%"/></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">信息內容:</td>
            <td colspan="3"><s:textarea id="editor" name="info.content" cssStyle="width:90%;height:160px;" /></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">備注:</td>
            <td colspan="3"><s:textarea name="info.memo" cols="90" rows="3"/></td>
        </tr>
        <tr>
            <td class="tdBg" width="200px">創建人:</td>
            <td>
            	<s:property value="info.creator"/>
            	<s:hidden name="info.creator"/>            
            </td>
            <td class="tdBg" width="200px">創建時間:</td>
            <td>
              	<s:date name="info.createTime" format="yyyy-MM-dd HH:ss"/>
             	<s:hidden name="info.createTime"/>
            </td>
        </tr>
    </table>
    <s:hidden name="info.infoId"/>
    <s:hidden name="info.state"/>
    <div class="tc mt20">
        <input type="submit" class="btnB2" value="保存" />
        &nbsp;&nbsp;&nbsp;&nbsp;
        <input type="button"  onclick="javascript:history.go(-1)" class="btnB2" value="返回" />
    </div>
    </div></div></div>
</form>
</body>
</html>

知識點(1):在編輯頁面,要注意隱藏原來的id和數據狀態

    <s:hidden name="info.infoId"/>
    <s:hidden name="info.state"/>

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SSH如何實現信息發布管理”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ssh
AI

宣城市| 栾川县| 达州市| 汨罗市| 田阳县| 山丹县| 隆昌县| 安西县| 高要市| 信宜市| 盈江县| 延长县| 沾益县| 若尔盖县| 鄂托克前旗| 铜梁县| 辽宁省| 肥东县| 临高县| 谢通门县| 原平市| 郓城县| 蕲春县| 深圳市| 织金县| 利津县| 伽师县| 吐鲁番市| 沙田区| 陇川县| 遂溪县| 余姚市| 桐乡市| 苗栗市| 武隆县| 绥江县| 蕲春县| 富锦市| 佛教| 榆树市| 曲麻莱县|