JS换行保存后,不显示换行,显示的却是字符<br>

图片说明
缺陷内容保存后可以换行显示,处理结果就不可以,就显示

function getAdd() {
    var w=$(window).width();
    var h=$(window).height();
    $('#dd').dialog({
        title: '添加缺陷记录',
        width: w * .6,
        height: h - 136,
        closed: false,
        cache: false,
        href: 'dia/log/defect-record/get-add.html?module_id=' + module_id + '&station_info=' + station_info,
        modal: true,
        buttons: [{
            text: '保存',
            iconCls: "easy-icon-save",
            handler: function () {
                var shift = $("#reportShift").combobox("getValue");
                if(shift == -1 || shift == ""){
                    $.messager.alert('操作', '请重新核对缺陷上报日期以及所选班次');
                    return false;
                }
                checkStation("station");//检测是否选择或输入
                var defectLevel = $('#defectLevel').combobox('getValue');
                if (defectLevel == 0 || defectLevel == 1) {
                    var planTime = $('#planProTime').datebox('getValue');
                    if (planTime == null || planTime == '') {
                        $.messager.alert("修改", "计划处理时间不能为空!", "error");
                        return;
                    }
                }
                var data = $("#defect-add-form").serialize();
                // var content = $('#content').val().replace(/\n/g,"<br/>");
                $.ajax({
                    url: "dia/log/defect-record/insert.do?module_id=" + module_id + '&proResult=' + $('#proResult').val().replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' '),
                    type : "post",
                    dataType : "json",
                    data : data,
                    success : function(request) {
                        if(request.success){
                            query();
                        }
                        $.messager.show({
                            title: '操作提示',
                            msg: request.msg,
                            timeout: 2000,
                            sshowType: 'slide'
                        });
                    }
                });

                $("#dd").dialog({
                    closed: true
                });
            }
        }, {
            text: '关闭',
            iconCls: "easy-icon-cancel",
            handler: function () {
                $("#dd").dialog({
                    closed: true
                });
            }
        }],
        //用于图形化,窗口打开完成后,给厂站赋值
        onLoad: function () {
            var indexDevId = $("#indexDevId").val();
            $('#station').combobox('setValue', indexDevId);
        }
    });
}

这是JSP代码

            <tr>
                <td class="td-inputtitle" style="text-align: center">处理结果</td>
                <td class="td-input" colspan="5" >
                    <c:forEach var="item" items="${historyProcess }">
                        <c:if test="${item.proResult!=null && item.proResult!='' }">
                            <div class="history_process">
                                <div class="user_info">${item.userName }<br/>${item.time }</div>
                                <div class="content" >${fn:replace(item.proResult,vEnter,'<br>') } </div>
                                <div class="clearfix"></div>
                            </div>
                        </c:if>
                    </c:forEach>
                    <textarea type="text" rows="6" name="proResult" id="proResult"
                              style="width:95%;"> ${currProcess.proResult } </textarea>
                </td>
            </tr>

1个回答

你渲染的时候可以用innerHtml试试,把html字符串转成html

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
php文本框字数截取并翻页问题
我现在遇见的问题是, 后台一个文本框输入内容保存到数据库, 前台页面显示的时候, 有一个js左右切换翻页那种效果 要根据内容长度翻页, 我用substr()+nl2br()截取字符串固定长度来显示每页的字数,, 然后用ceil+mb_strlen计算显示的总页数$count 定义一个变量$a=1 用while循环判断$a<=$count,最后$a++; 但是问题来了, 显示出来的效果, 第一页字数很少, 后面每一页的字数越来越多, 后面也显示不完整,每页开头和结尾可能出现一个?乱码 求大神指教,哪里出了问题,或者有什么更好的办法做到这种截取字数翻页的效果
C#.net中 公用string字符串的赋值失败问题
**我要做的是选择底下GridView的内容 然后点击提交按钮后 把GridView中的课程ID提交到数据库保存下来** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967328_266399.png) **问题出在这个公用字符串CID1 在GRIDView中选择时 CID1 能成功记录所选的信息 (图一断点验证)** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967249_929930.png) **但是点击提交按钮后CID1变成空(图二断点验证)** ![图片说明](https://img-ask.csdn.net/upload/201907/24/1563967297_993480.png) **之前问过类似的问题,有个前辈是说点击了asp:button后 页面重新加载 刷新CID1 经过改造我现在这些操作过程是直接选择GRIDVIEW中的内容 再点击提交 中间没有点击按钮的操作 怎么会刷新呢 然后在网上查好像是要用ispostback来做 但是ispostback 只能用在方法里使用 在我定义这个字符串的位置不能够使用 希望前辈们能教教我 如何解决这个问题 或者能教教我如何点击GRIDVIEW中的内容 如何把CELL[0]中的内容传到底下submit的方法**里 **下面是后端代码**: ``` using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class HTML_ChooseCourse : System.Web.UI.Page { string CID1=""; protected void Page_Load(object sender, EventArgs e) { } protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { //记录GridView中选择的内容,到下面提交时要用到 int index = GridView1.SelectedIndex; this.LabTuesday.Text = GridView1.Rows[index].Cells[1].Text; CID1=GridView1.Rows[index].Cells[0].Text.ToString(); } public static void Messagebox(string message) { string strScript = "<script type=\"text/javascript\" language=\"javascript\">alert('" + message + "')</script>"; System.Web.UI.Page thisPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; thisPage.ClientScript.RegisterStartupScript(thisPage.GetType(), "ShowMsgBox", strScript); } protected void BtnSubmit_Click(object sender, EventArgs e) { if ( this.LabTuesday.Text != "") { string connectionstr = "Data Source=DESKTOP-79153UB;Initial Catalog=db_StudentManage;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionstr); connection.Open(); SqlCommand command = new SqlCommand(); command.Connection = connection; //将上面记录的信息记录到数据库中 上面选择GRIDVIEW中的信息 记录下的 CID1 到这个方法就无内容了 command.CommandText = string.Format("insert into tb_ChooseCourse values ('{0}','{1}','周二')", CID1.ToString(),Session["ID"].ToString()); int count1 = command.ExecuteNonQuery(); if (count1== 1) Messagebox("提交成功"); else Messagebox("提交失败,请重试!"); connection.Close(); } else Messagebox("有信息为空,请继续选课!"); } } ``` **下面是前端代码:** ``` <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChooseCourse1.aspx.cs" Inherits="HTML_ChooseCourse" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>选课</title> <style> .TopDiv { border: 0px solid black; width:100%; height: 60px; position: absolute; left: 20px; top: 20px; text-align:center; } .MiddleDiv { border: 0px solid black; width: 680px; height: 290px; position: absolute; left:320px; top: 180px; } .SecondDiv { border: 0px solid black; width: 894px; height: 50px; position: absolute; left:320px; top: 100px; } .btn { border-style: none; border-color: inherit; border-width: medium; background-color: #62a8ea; line-height: 45px; color: white; cursor: pointer; font-size: 16px; font-weight: bold; } </style> </head> <body style="background-color:#E6E6E6"> <form id="form1" runat="server"> <div class="TopDiv" style="font-family:幼圆;font-size:50px"> 选课 </div> <div class="SecondDiv"> <table style="background-color:#E6E6E6"> <tr> <td><asp:Button ID="BtnTuesday" CssClass="btn" runat="server" Text="周二" Height="50px" Width="90px" Font-Underline="False" OnClientClick="return false" /></td> <td style="font-family:幼圆;background-color:#E6E6E6;text-align:center"><asp:Label ID="LabTuesday" runat="server" Height="50px" Width="490px" BackColor="Silver" ></asp:Label></td> <td><asp:Button ID="BtnSubmit" CssClass="btn" runat="server" Text="提交" Height="50px" Width="90px" OnClick="BtnSubmit_Click"/></td> </tr> </table> </div> <div class="MiddleDiv"> <asp:GridView style="text-align:center;font-family:幼圆;" Height="370px" Width="676px" ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="CId" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" > <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="CId" HeaderText="课程ID" ReadOnly="True" SortExpression="CId" /> <asp:BoundField DataField="CName" HeaderText="课程姓名" SortExpression="CName" /> <asp:BoundField DataField="TID" HeaderText="负责教师ID" SortExpression="TID" /> <asp:CommandField HeaderText="操作" ShowSelectButton="True" /> </Columns> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#E9E7E2" /> <SortedAscendingHeaderStyle BackColor="#506C8C" /> <SortedDescendingCellStyle BackColor="#FFFDF8" /> <SortedDescendingHeaderStyle BackColor="#6F8DAE" /> </asp:GridView> <br /> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ ConnectionStrings:db_StudentManageConnectionString %>" DeleteCommand="DELETE FROM [tb_Course] WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))" InsertCommand="INSERT INTO [tb_Course] ([CId], [CName], [TID]) VALUES (@CId, @CName, @TID)" OldValuesParameterFormatString="original_{0}" SelectCommand="SELECT * FROM [tb_Course]" UpdateCommand="UPDATE [tb_Course] SET [CName] = @CName, [TID] = @TID WHERE [CId] = @original_CId AND (([CName] = @original_CName) OR ([CName] IS NULL AND @original_CName IS NULL)) AND (([TID] = @original_TID) OR ([TID] IS NULL AND @original_TID IS NULL))"> <DeleteParameters> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="CId" Type="String" /> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="CName" Type="String" /> <asp:Parameter Name="TID" Type="String" /> <asp:Parameter Name="original_CId" Type="String" /> <asp:Parameter Name="original_CName" Type="String" /> <asp:Parameter Name="original_TID" Type="String" /> </UpdateParameters> </asp:SqlDataSource> </div> </form> </body> </html> ```
Java WEB 连接数据库的登录界面失败?
使用Eclipse做登陆界面,连接MySQL 8.0,测试过连接数据库应该是成功的,可能是struts配置有问题,新手不知道问题出在哪里,请帮忙看一下代码,我标注几个我可能出问题又不知道怎么改的地方 //login.jsp //此处可能是表单中form的action属性有问题? ``` <%@ page contentType="text/html; charset=gb2312" language="java"%> <html> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <head> <title>图书馆管理系统</title> <link href="CSS/style.css" rel="stylesheet"> <script language="javascript"> function check(form){ if (form.name.value==""){ alert("请输入用户名称");form.name.focus();return false; } if (form.pwd.value==""){ alert("请输入密码");form.pwd.focus();return false; } } </script> </head> <body> <table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" class="tableBorder"> <tr> <td width="1000" height="545" align="center" background="Images/login.png"> <table width="1000" height="345" aligh="center" ></table> <form name="form1" method="post" action="manager.do?action=login"> <table width="400" height="200" align="left"> <tr> <td height="37" style="width: 128px; "></td> <td height="37" width="50"> 用户名</td> <td height="37" width="150"> <input name="name" type="text" class="logininput" id="name" size="27"> </td> </tr> <tr> <td height="37" style="width: 128px; "></td> <td height="37" width="50"> 密码 </td> <td height="37" width="150"> <input name="pwd" type="text" class="logininput" id="pwd" size="27"> </td> </tr> <tr> <td height="37" style="width: 128px; "></td> <td height="37" width="50"></td> <td height="37" width="200"> <input name="Submit" type="submit" class="btn_grey" value="确定" onClick="return check(form1)"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="Submit3" type="reset" class="btn_grey" value="重置"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input name="Submit2" type="button" class="btn_grey" value="关闭" onClick="window.close();"> </td> </tr> </table> </form> </td> <tr> <td align="center" height="50" bgcolor="#3A3A3A" class="word_login">CopyRight &copy; 2019版权所有 xx图书馆<br> </td> </tr> </table> </body> </html> ``` //Manager.java ``` package com.action; import org.apache.struts.action.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.actionForm.ManagerForm; import com.dao.ManagerDAO; import javax.servlet.http.HttpSession; public class Manager extends Action { private ManagerDAO managerDAO = null; public Manager() { this.managerDAO = new ManagerDAO(); } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String action = request.getParameter("action"); // System.out.println("获取的查询字符串:" + action); if (action == null || "".equals(action)) { return mapping.findForward("error"); } else if ("login".equals(action)) { return managerLogin(mapping, form, request, response); } request.setAttribute("error", "操作失败!"); return mapping.findForward("error"); } // 管理员身份验证 public ActionForward managerLogin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ManagerForm managerForm = (ManagerForm) form; //将接收到的表单信息强制转换成ActionForm类型 managerForm.setAd_name(managerForm.getAd_name()); managerForm.setAd_pwd(managerForm.getAd_pwd()); int ret = managerDAO.checkManager(managerForm); System.out.print("验证结果ret的值:" + ret); if (ret == 1) { //将登录到系统的管理员名称保存到session HttpSession session = request.getSession(); session.setAttribute("manager", managerForm.getAd_name()); return mapping.findForward("managerLoginok"); } else { request.setAttribute("error", "您输入的管理员名称或密码错误!"); return mapping.findForward("error"); } } } ``` //ManagerForm ``` package com.actionForm; import org.apache.struts.action.ActionForm; public class ManagerForm extends ActionForm { private int ad_id; private String ad_name; private String ad_pwd; public ManagerForm() { } public int getAd_id() { return ad_id; } public void setAd_id(int ad_id) { this.ad_id=ad_id; } public String getAd_name() { return ad_name; } public void setAd_name(String ad_name) { this.ad_name=ad_name; } public String getAd_pwd() { return ad_pwd; } public void setAd_pwd(String ad_pwd) { this.ad_pwd=ad_pwd; } } ``` //ManagerDAO ``` package com.dao; import com.core.ChStr; import com.core.ConnDB; import java.util.*; import com.actionForm.ManagerForm; import java.sql.*; public class ManagerDAO { private ConnDB conn = new ConnDB(); //管理员身份验证 public int checkManager(ManagerForm managerForm) { int flag = 0; ChStr chStr=new ChStr(); String sql = "SELECT * FROM Ad_info where ad_name='" + chStr.filterStr(managerForm.getAd_name()) + "'"; ResultSet rs = conn.executeQuery(sql); try { if (rs.next()) { String pwd = chStr.filterStr(managerForm.getAd_pwd()); //获取输入的密码并过滤输入字符串中的危险字符 if (pwd.equals(rs.getString(3))) { flag = 1; } else { flag = 0; } }else{ flag = 0; } } catch (SQLException ex) { flag = 0; }finally{ conn.close(); } return flag; } } ``` //ConnDB ``` package com.core; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class ConnDB { public Connection conn=null; public Statement stmt=null; public ResultSet rs=null; private static String propFileName="/com/connDB.properties"; private static Properties prop=new Properties(); private static String dbClassName="com.mysql.cj.jdbc.Driver"; private static String dbUrl="jdbc:mysql://223.80.110.29:3306/sys_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL"; private static String dbUserName="root"; private static String dbPassword=""; //加载资源文件 public ConnDB() { try { InputStream in=getClass().getResourceAsStream(propFileName); prop.load(in); dbClassName=prop.getProperty("DB_CLASS_NAME","com.mysql.cj.jdbc.Driver"); dbUrl=prop.getProperty("DB_URL","jdbc:mysql://localhost:3306/db_librarysys?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL"); dbUserName=prop.getProperty("DB_USERNAME"); dbPassword=prop.getProperty("DB_PASSWORD"); } catch(Exception e){ e.printStackTrace(); } } public static Connection getConnection() { Connection conn=null; try { //加载数据库驱动 Class.forName(dbClassName); conn=DriverManager.getConnection(dbUrl,dbUserName,dbPassword); } catch(Exception ee) { ee.printStackTrace(); } if(conn==null) { System.err.println("警告:DbConnectionManager.getConnection()获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl); } return conn; } //执行查询语句 public ResultSet executeQuery(String sql) { try { conn=getConnection(); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); /*ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 */ rs=stmt.executeQuery(sql); } catch(SQLException ex){ System.err.println(ex.getMessage()); } return rs; } //执行更新操作 添加修改删除数据 public int executeUpdate(String sql) { int result=0;//更新的行数 try { conn=getConnection(); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); result=stmt.executeUpdate(sql); }catch(SQLException ex) { result=0; } return result; } public void close() { try { if(rs!=null) { rs.close(); } if(stmt!=null) { stmt.close(); } if(conn!=null) { conn.close(); } }catch(Exception e) { e.printStackTrace(System.err); } } } ``` //struts-config ``` <?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> <form-beans> <form-bean name="managerForm" type="com.actionForm.ManagerForm" /> <form-bean name="ParameterForm" type="com.actionForm.ParameterForm" /> </form-beans> <action-mappings type="org.apache.struts.action.ActionMapping"> <action name="managerForm" path="/manager" scope="request" type="com.action.Manager" validate="true"> <forward name="managerLoginok" path="/main.jsp" /> <forward name="error" path="/error.jsp" /> </action> <action name="ParameterForm" path="/parameter" scope="request" type="com.action.Parameter" validate="true"> <forward name="error" path="/error.jsp" /> <forward name="parametermodify" path="/parameter_ok.jsp?para=2" /> <forward name="parametermodifyQuery" path="/parameter_modify.jsp" /> </action> </action-mappings> <message-resources parameter="com.wgh.struts.ApplicationResources" /> </struts-config> ```
帮我看看这段js哪有问题
我有一段书上的例子 我照着打出来了 但是他并不能执行 书上的意思 注册错误三次 注册按钮锁死 显示出解锁按钮 我照着兑了好几遍 没发现那写错 请你们帮我看看 一段很简短的注册例子 ``` <form method="post" action="" onsubmit="return eg.regCheck();"> <input type="hidden" name="" id="errnum" value="0"/> 账户: <input type="text" name="" id="userid"/><br /><br /> 密码: <input type="password" name="" id="userpwd"/><br /><br /> 确认: <input type="password" name="" id="userpwd2" /><br /><br /> 简介: <textarea name="" rows="4" cols="18" id="about"></textarea><br /><br /> <input type="submit" value="注册" id="regBth"/> <input type="button" value="解锁" onclick="eg.unlock()" style="display:none;" id="regUnlock"/> </form> <script> //声明一个对象,当命名空间来使用,本书默认的范例都会以此来方便管理 var eg ={}; //定义一个公共函数来获取指定id元素,减少代码量,提高代码复用率 eg.$ = function (id){ return document.getElementById(id); }; eg.regCheck = function(){ var uid = eg.$("userid"); var upwd = eg.$("userpwd"); var upwd2 = eg.$("userpwd2"); if(uid.value == ''){ alert("账户不可以为空"); eg.err(); return false;//返回false就会阻止表单form提交 } if(upwd.value ==''){ alert("密码不可以为空"); eg.err(); return false; } if(upwd.value != upwd2.value){ alert("俩次密码不相同"); eg.err(); return false; } var about = eg.$("about"); if(about.value.length>60){ alert('简介太长'); eg.err(); return false; } return true;//返回ture就会提交form表单 }; //出错时记录错误数 eg.err = function(){ var el = eg.$("errnum"); var old = el.value; el.value = parseInt(old)+1 //把字符串转换成为整数1,并保存起来 eg.lock }; //通过次数判断是否要锁定注册 eg.lock = function(){ var err = eg.$("errnum"); if(parseInt(err.value)>2){ eg.$("regBth").disabled = true; //根据业务需求,输错3次锁定 eg.$("regUnlock").style.display = "block"; //同时显示解锁按钮 } }; //解锁 eg.unlock = function(){ eg.$("regBth").disabled = false; //根据业务需求,解锁就是可以让用户可以重新注册 eg.$("regUnlock").style.display = "none"; //元素所有样式都挂载到style属性下 } </script> ```
用aspose.word 怎样才能导出网页 上的数学公式。?
有这样一个网页,前台部分代码如下。 ``` ........... <script type="text/javascript" src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"> </script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ showProcessingMessages: false, messageStyle: "none", extensions: ["tex2jax.js"], jax: ["input/TeX", "output/HTML-CSS"], tex2jax: { inlineMath: [ ["$", "$"] ], displayMath: [ ["$$","$$"] ], skipTags: ['script', 'noscript', 'style', 'textarea', 'pre','code','a'], ignoreClass:"comment-content" }, "HTML-CSS": { availableFonts: ["STIX","TeX"], showMathMenu: false } }); MathJax.Hub.Queue(["Typeset",MathJax.Hub]); </script> </head> <body> <form id="form1" runat="server"> <div> <div id="report_body_panel" runat="server"> <p> 9.下列二次根式中,与$\sqrt{5}$是同类二次根式的是(  ) </p> <p> <br /> </p> <p> <br /> </p> <p> &nbsp;A.$\sqrt{18}$&nbsp;&nbsp;&nbsp;&nbsp;B.$\sqrt{\frac{5}{2}}$&nbsp;&nbsp;&nbsp;&nbsp;C.$\sqrt{20}$&nbsp;&nbsp;&nbsp;&nbsp;D.$\sqrt{0.5}$ </p> </div> </div> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </form> </body>``` ``` 这段代码经过mathjax渲染后,在前台是能正常显示数学公式的。现在我想用aspose.word将 ``` <div id="report_body_panel" runat="server">数学公式latex代码</div> ``` 里面的内容导出保存为word.该怎么做呢,求高手指点。万分感谢! ```真心求解,如有解决问题者,定当重谢! 我又作了这样的尝试, ``` protected void Page_Load(object sender, EventArgs e) { this.Literal1.Text = @"A.$2\sqrt{2}$B.$3\sqrt{2}$C.4D.16"; } protected void Button1_Click(object sender, EventArgs e) { Aspose.Words.Document wordDoc = new Aspose.Words.Document(); DocumentBuilder builder = new DocumentBuilder(wordDoc); string html = this.Literal1.Text;//这是html文本 builder.InsertHtml(html); wordDoc.Save("D:\\test.doc", SaveFormat.Doc); } ``` 但是这样保存下来的是字符串的内容而不是公式!!!!!是哪里出了问题呢?
datagrid 表中的 怎么去限制俩个datetimebox 的大小
表结构<br/>![图片说明](https://img-ask.csdn.net/upload/201610/07/1475825320_194509.png) 我想让datetimebox A 如果选择了 2016-8-8 那么 datetimebox B就不能进行选 8-8之前的日期了 只能比它大,反之亦然,A不能比B大! 表格代码是这样的 <br/> html部分 ``` <table id="dg" rownumbers="true" class="easyui-datagrid" style="width:100%;height:auto;" data-options="onEndEdit:onEndEdit,onLoadSuccess:compute"> <thead> <tr> <th data-options="field:'ck',width:100,checkbox:true"></th> <th data-options="field:'dept_id',width:100,formatter:function(value,row){return row.dept_name; },editor:{ type:'combobox',options:{ valueField:'dept_id', textField:'dept_name',method:'get',url:'{$json}', } }">开单部门</th> <th data-options="field:'to_dept',width:100, formatter:function(value,row){ return row.todeptname;},editor:{ type:'combobox',options:{ valueField:'dept_id', textField:'todeptname',url:'{$json2}', editable:false }}">目标分店</th> <th data-options="field:'so_date',width:160,editor:{type:'datetimebox',options:{editable:false,}}">发生日期</th> <th data-options="field:'income',width:100,editor:{type:'numberbox',options:{}},formatter:function(value,row,index){ return formatNumber(value,2); }">借</th> <th data-options="field:'pay',width:100,editor:{type:'numberbox',options:{}}, formatter:function(value,row,index){ return formatNumber(value,2);}">贷</th> <th data-options="field:'record_date',width:160,editor:{type:'datetimebox',options:{editable:false}}">审核日期</th> </tr> </thead> </table> ``` JS部分 ``` <script> $(document).ready(function(){ var datagrid; //定义全局变量datagrid var editRow1 = undefined; //定义全局变量:当前编辑的行 datagrid1 = $("#dg").datagrid({ url:'{$recURL}', //请求的数据源 iconCls: 'icon-save', //图标 fit: false, //datagrid自适应宽度 fitColumn: false, //列自适应宽度 striped: true, //行背景交换 nowrap: true, //列内容多时自动折至第二行 border: false, idField: 'dept_id', //主键 //queryParams: { action: 'query' }, //查询参数 toolbar: [{ text: '添加一行', iconCls: 'icon-add', handler: function () { if (editRow1 != undefined) { datagrid1.datagrid("endEdit", editRow1); } if (editRow1 == undefined) { datagrid1.datagrid("insertRow", { index: 0, // index start with 0 row: { } }); //将新插入的那一行开户编辑状态 datagrid1.datagrid("beginEdit", 0); var insert_c= $('#dg').datagrid("getChanges",'updated'); var dg = $('#dg').datagrid('getEditor', { index: 0, field: 'dept_id' }); $(dg.target).combobox('select',"001"); //给当前编辑的行赋值 editRow1 = 0; } } }, '-', { text: '删除选中', iconCls: 'icon-remove', handler: function () { //删除时先获取选择行 var rows = datagrid1.datagrid("getSelections"); //选择要删除的行 if (rows.length > 0) { $.messager.confirm("提示", "你确定要删除吗?", function (r) { if (r) { var ids = []; var row = []; for (var i = 0; i < rows.length; i++) { var rowIndex = $('#dg').datagrid('getRowIndex', rows[i]);//获取指定行 row[i]=rowIndex; ids.push(rows[i].dept_id); } if($('#dg').datagrid('getRows').length==row.length){ editRow1 = undefined; datagrid1.datagrid("rejectChanges"); $.messager.alert("提示","删除成功","info"); }else{ for(var i=0;i<row.length;i++){ $('#dg').datagrid('deleteRow', row[i]); //删除指定行 } }//将选择到的行存入数组并用,分隔转换成字符串, } }); } else { $.messager.alert("提示", "请选择要删除的行","error"); } } }, '-', { text: '修改选中', iconCls: 'icon-edit', handler: function () { //修改时要获取选择到的行 var rows = datagrid1.datagrid("getSelections"); //如果只选择了一行则可以进行修改,否则不操作 if (rows.length == 1) { //修改之前先关闭已经开启的编辑行,当调用endEdit该方法时会触发onAfterEdit事件 if (editRow1 != undefined) { datagrid1.datagrid("endEdit", editRow1); } //当无编辑行时 if (editRow1 == undefined) { //获取到当前选择行的下标 var index = datagrid.datagrid("getRowIndex", rows[0]); //开启编辑 datagrid1.datagrid("beginEdit", index); //把当前开启编辑的行赋值给全局变量editRow1 editRow1 = index; datagrid1.datagrid("unselectAll"); } }else { $.messager.alert('警告', '修改必须或只能选择一行!', 'warning'); } } }, '-', { text: '保存', iconCls: 'icon-save', handler: function () { //保存时结束当前编辑的行,自动触发onAfterEdit事件如果要与后台交互可将数据通过Ajax提交后台 datagrid1.datagrid("endEdit", editRow1); } }, '-' , {text: '设置视图', handler: function (){ var s=$(this).parents("fieldset").find(".datagrid-header"); set_view(s); } },'-'], onAfterEdit: function (rowIndex, rowData, changes) { //endEdit该方法触发此事件 //console.info(rowData); editRow1 = undefined; compute(); }, onDblClickRow: function (rowIndex, rowData) { //双击开启编辑行 var cx; var insert_c= $('#dg').datagrid("getChanges",'inserted'); for(var i=0;i<insert_c.length;i++){ var row_l=$('#dg').datagrid("getRowIndex",insert_c[i]); if(rowIndex==row_l){ cx=true; } } if (editRow1 != undefined) { datagrid1.datagrid("endEdit", editRow1); } if (editRow1 == undefined) { var rows = $('#dg').datagrid('getRows'); if(cx){ datagrid1.datagrid("beginEdit", rowIndex); editRow1 = rowIndex; cx=false; }else{ datagrid1.datagrid("beginEdit", rowIndex); editRow1 = rowIndex; var dd = $('#dg').datagrid('getEditor', { index: rowIndex, field: 'dept_id' }); $(dd.target).combobox('disable'); } } } }); //编辑状态 function endEditing1() { if (editRow1 == undefined) { return true } if ($('#dg').datagrid('validateRow', editRow1)) { var ed = $('#dg').datagrid('getEditor', { index: editRow1, field: 'dept_id' }); $('#dg').datagrid('endEdit', editRow1); editRow = undefined; return true; } else { return false; } } }); function onEndEdit(index, row){ var ed = $('#dg').datagrid('getEditor', { index: index, field: 'dept_id' }); row.dept_name = $(ed.target).combobox('getText'); var ed1 = $('#dg').datagrid('getEditor', { index: index, field: 'to_dept' }); row.todeptname = $(ed1.target).combobox('getText'); } function compute(){ var rows = $('#dg').datagrid('getRows')//获取当前的数据行 var ptotal = 0//计算listprice的总和 ,utotal = 0//统计unitcost的总和 ,table = 0; for (var i = 0; i < rows.length; i++) { ptotal += parseFloat(rows[i]['income']) || 0 ; utotal += parseFloat(rows[i]['pay']) || 0 ; } table = ptotal - utotal; document.getElementById('payin').innerText=ptotal.toFixed(2).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,');//输出位置 document.getElementById("payout").innerText=utotal.toFixed(2).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,'); document.getElementById('payincome').innerText=table.toFixed(2).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,'); } function formatNumber(value, fixed) { var number = Number(value); return number.toFixed(2).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,'); }</script> ``` 因为他的是easyui组件,我不知道怎么去实现 这个需求
Ueditor 跨域上传图片,图片回显不能接收到json数据问题。
问题描述:搭建了俩服务器,一个资源服务器,一个应用服务器, 当使用Ueditor上传功能时,必须将图片上传到资源服务器,也就是远程服务器时,会出现跨域问题,一个应用服务器时用Ueditor上传图片到一个应用中,没有问题,json也可以接收到,但上传到资源服务器时,上传的Controller可以正常执行、返回json数据,但接收不到json数据,导致图片无法回显 使用 document.domain = "http://localhost";会报错,不知如何配置。 菜鸟一枚,请高手指点一二 **1.downFile=文件服务器 / tuji=项目目录** (文件服务器地址为:http://localhost:8080 项目目录地址:http://localhost:80) ![图片说明](https://img-ask.csdn.net/upload/201708/11/1502443327_119661.png) ![图片说明](https://img-ask.csdn.net/upload/201708/11/1502443386_267950.png) . Ueditor.all.js报错的位置 ![图片说明](https://img-ask.csdn.net/upload/201708/11/1502444900_772575.png) **2.jsp页面代码** ``` <%@ page language="java" contentType="text/html; charset=UTF-8" import="com.tuji.utils.FileUtil" pageEncoding="UTF-8"%> <%@ page trimDirectiveWhitespaces="true" %> <% String contextPath = FileUtil.httpPath; %> <%-- <% String contextPath = "http://"+request.getServerName()+":"+request.getLocalPort()+request.getContextPath(); %> --%> <!DOCTYPE html> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/third-party/jquery-1.10.2.js"></script> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/ueditor.all.js"> </script> <script type="text/javascript" charset="utf-8" src="<%=contextPath%>/resource/web/common/ueditor/lang/zh-cn/zh-cn.js"></script> <script> //编辑器资源文件根路径 最好在ueditor.config.js中配置 window.UEDITOR_HOME_URL = "<%=contextPath%>/"; //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例 var ue = UE.getEditor('editor',{initialFrameHeight: 500,initialFrameWidth:800,maximumWords:3000,elementPathEnabled:false}); //复写UEDITOR的getActionUrl 方法,定义自己的Action UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl; UE.Editor.prototype.getActionUrl = function(action) { if (action == 'uploadimage' || action == 'uploadfile') { var id = $('#carInfoId').val(); return '<%=contextPath %>/file/ueditorUpload'; } else { return this._bkGetActionUrl.call(this, action); } }; // 复写UEDITOR的getContentLength方法 解决富文本编辑器中一张图片或者一个文件只能算一个字符的问题,可跟数据库字符的长度配合使用 UE.Editor.prototype._bkGetContentLength = UE.Editor.prototype.getContentLength; UE.Editor.prototype.getContentLength = function(){ return this.getContent().length; } </script> <html> <head> <%@ include file="../../common/common.jsp"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="${ctx}/resource/web/sys/sys/sys.css"> <link rel="stylesheet" type="text/css" href="${ctx}/resource/web/common/css/backstageCommon.css"> <%-- <script type="text/javascript" charset="utf-8" src="${ctx }/resource/web/common/ueditor/ueditor.config.js"></script> --%> <%-- <script type="text/javascript" charset="utf-8" src="${ctx }/resource/web/common/ueditor/ueditor.all.min.js"> </script> --%> <!-- 建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败 --> <!-- 这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文 --> <%-- <script type="text/javascript" charset="utf-8" src="${ctx }/resource/web/common/ueditor/lang/zh-cn/zh-cn.js"></script> --%> </head> <body class="bgColor2" style="text-align: center;"> <div style="width: 20%;margin: 0 auto;margin-top: 10%;"> <form id="saveForm" action="${ctx }/sys/opus/saveContent" method="post"> <input type="hidden" name="id" value="${opus.id }"> <input type="button" id="close" class='bgColor2 borderColor2 fontColor1 btn alertBtn pageBtn' style='margin: 0 auto;font-size:12px;margin-bottom: 80px;' value="关&nbsp;闭"> <input type="button" id="saveContent" class='bgColor2 borderColor2 fontColor1 btn alertBtn pageBtn' style='margin: 0 auto;font-size:12px;margin-bottom: 80px;' value="保&nbsp;存"> <br/> <div style="color: white;margin-bottom: 30px;">${opus.name }</div> <script name="content" id="editor" type="text/plain"> ${opus.content } </script> </form> </div> <%@ include file="../../common/upload.jsp"%> </body> <!-- 富文本编辑器 --> <script type="text/javascript"> // document.domain = "http://localhost:8080"; $("#close").click(function() { window.close(); }); var isFirst = true; $("#saveContent").click(function() { if(!isFirst){ return; } $("#saveForm").submit(); return; $.ajax({ type: "POST", url: "${ctx}/sys/opus/saveContent", data:{ "id" : '${opus.id}', "content" : $("#editor").val() }, dataType : "json", success: function(data) { if(data.result == 0){ alert("保存成功!") }else{ alert(data.msg); } } }); }); $(".pageBtn").hover(function() { $(this).removeClass("bgColor2"); $(this).addClass("bgColor1"); $(this).removeClass("fontColor1"); $(this).addClass("fontColor3"); $(this).css("transition", "all 0.25s ease"); }, function() { $(this).removeClass("bgColor1"); $(this).addClass("bgColor2"); $(this).removeClass("fontColor3"); $(this).addClass("fontColor1"); $(this).css("transition", "all 0.5s ease"); }); </script> </html> ``` ``` **3.接收Ueditor上传的Conroller** /** * Ueditor 文件上传Action * @param req * @return UEDITOR 需要的json格式数据 */ @CrossOrigin @RequestMapping(value="ueditorUpload",method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public Map<String,Object> upload(HttpServletRequest request){ Map<String,Object> result = new HashMap<String, Object>(); MultipartHttpServletRequest mReq = null; MultipartFile file = null; InputStream is = null ; String fileName = ""; try { mReq = (MultipartHttpServletRequest)request; // 从config.json中取得上传文件的ID file = mReq.getFile("upfile"); // 原始文件名 UEDITOR创建页面元素时的alt和title属性 String originalFileName = file.getOriginalFilename(); String filePath = ""; if (!file.isEmpty()) { try { String newName = UUID.randomUUID().toString() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); String path = FileUtil.getUeditorDownPath(); FileUtil.uploadFile(request, new BufferedInputStream(file.getInputStream()), path + newName); filePath = path + newName; Long fileSize = file.getSize(); SysFile sysFile = new SysFile(); sysFile.setPath(filePath); sysFile.setSize(fileSize + ""); sysFile.setName(originalFileName); sysFileServiceI.saveOrUpdate(sysFile); result.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容 result.put("url", FileUtil.getHttpPath() + filePath); result.put("title", originalFileName); result.put("original", originalFileName); } catch (IOException e) { e.printStackTrace(); result.put("success", false); result.put("msg", "服务器异常,请联系管理员!"); } return result; } else { result.put("success", false); result.put("msg", "文件内容为空!"); return result; } } catch (Exception e) { System.out.println(e.getMessage()); result.put("state", "文件上传失败!"); result.put("url",""); result.put("title", ""); result.put("original", ""); System.out.println("文件 "+fileName+" 上传失败!"); } return result; } ```
angularjs表单验证时的问题
我在做angularjsb表单验证时,默认值一栏的要求只是字符最大长度为64,可以为空,但是出来的效果是输入了英文和中文后无效,输入数字之后合法,请大神帮我看下 [图片说明](https://img-ask.csdn.net/upload/201509/29/1443497068_995113.png) ![图片说明](https://img-ask.csdn.net/upload/201509/29/1443497085_227066.png) <div class="modal fade" id="newDimensionModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"> <div class="modal-dialog modal-lg" role="document" style="width:580px"> <div class="modal-content"> <div class="modal-header" style="background: #000000; color: #ffffff;"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button> <h4 class="modal-title">创建维度字段</h4> </div> <div style="background: #e4eaec; overflow: hidden;"> <div class="page-intro vxnets"> <p> <em>创建维度字段</em> </p> </div> </div> <div class="modal-body"> <form name="createDimensionForm2" class="form-validation" style="margin-left:10px" ng-submit="submitForm(createDimensionForm2.$valid)" novalidate> <div class="form-group"> <label>属性名称</label> <input type="text" class="form-control" style="width:500px;height:40%" placeholder="请输入1~30个字符" name="name" ng-model="newDimension.name" ng-minlength="1" ng-maxlength="60" required> </div> <div class="form-group"> <label>类型</label> <select class="form-control ng-valid ng-dirty" ng-model="newDimension.type" style="width:500px;height:40%" required> <option value="1">字符串</option> <option value="2">数字</option> <option value="3">日期</option> <option value="4">货币</option> <option value="5">枚举</option> </select> </div> <div class="form-group" ng-show="newDimension.type=='5'"> <label>枚举选项</label> <br> <input class="form-control input-sm col-sm-6" type="text" style="width:500px;height:35px" placeHolder="请输入枚举选项,选项之间用分号分开" ng-model="newDimension.enumValue" ng-maxlength="64"/> <br> <br> </div> <div class="form-group" ng-show="newDimension.type==''"> <label>默认值</label> <br> <input class="form-control input-sm col-sm-6" type="text" style="width:500px;height:35px" placeHolder="输入字符串" ng-model="newDimension.defaultValue" ng-maxlength="64"/> <br> <br> </div> <div class="form-group" ng-show="newDimension.type=='1'"> <label>默认值</label> <br> <input class="form-control input-sm col-sm-6" type="text" style="width:500px;height:35px" placeHolder="输入字符串" ng-model="newDimension.defaultValue" ng-maxlength="64"/> <br> <br> </div> <div class="form-group" ng-show="newDimension.type=='2'"> <label>默认值</label> <br> <input class="form-control input-sm col-sm-6" type="text" style="width:500px;height:35px" id="number" ng-pattern="/^[0-9]*$/" placeHolder="输入数字" ng-model="newDimension.defaultValue"/> <p ng-show="conditionForm.number.$pristine&& submitted" class="help-block">请输入数字</p> <br> <br> </div> <div class="form-group" ng-show="newDimension.type=='3'"> <label>默认日期</label> <br> <input class="form-control input-sm col-sm-6" type="text" style="width:500px;height:35px" id="datetimepicker1" name="keepdate1" data-date-format="yyyy-mm-dd" ng-model="newDimension.defaultValue" ng-maxlength="64" readonly /> <br> <br> </div> <div class="form-group" ng-show="newDimension.type=='4'"> <label>默认金额</label> <br> <div class="input-group"> <span class="input-group-addon">RMB</span> <input id="money" class="form-control input-sm col-sm-6" type="text" style="width:443px;height:35px" placeHolder="输入金额" ng-pattern="/^[0-9]*$/" ng-model="newDimension.defaultValue" ng-maxlength="64"/> <p ng-show="conditionForm.money.$pristine&& submitted" class="help-block">请输入数字</p> </div> </div> <div class="form-group"> <label>描述</label><br> <div> <textarea ng-model="newDimension.description" style="width:500px;height:40%" cols="78"></textarea> </div> </div> </form> </div> <div class="modal-footer"> <button type="reset" class="btn btn-dark" ng-click="cancel1()">取消</button> <button type="submit" class="btn btn-dark" ng-click="save1()" ng-disabled="createDimensionForm2.$invalid">保存</button> </div> </div> </div> </div>
页面元素显示不完整
请先看截图,我第一次遇到这种问题,当然,不是代码标签未写完整的,代码所有的TD,TR都是包含完整且检查了很多遍。 初步认为是字符编码集的问题,但是找不到解决方法。。 有没有遇到过相似情况的同仁? 请赐教 下面贴上这个页面的相应代码: [code="java"] <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>main</title><%@include file="../includedMain.jspf"%> <script language="JavaScript" type="text/javascript"> $(document).ready(function() { $.datepicker.setDefaults( $.datepicker.regional[ "zh-CN" ] ); $( "#choose-birthday" ).datepicker( {changeMonth: true, changeYear : true, yearRange : 'c-100:c' }); $( "#choose-come-day" ).datepicker( {changeMonth: true, changeYear : true, yearRange : 'c-100:c' }); var positionName = $("#pozitionSelect").find("option:selected").attr('name'); var teamTD = $("#ownTeamLabel"); if(teamTD!=null) { if(positionName == 'staffVO.salesman') { $("#ownTeamSelector").show(); $(teamTD).show(); } } }); </script> </head> <body class="ContentBody"> <form id="staff_update_form" class="validate" action="<s:url value='/staff/staffUpdate.action'/>" method="post" enctype="multipart/form-data" name="form" target="mainFrame"><input type="hidden" name="staffVO.version" value="<s:property value='staffVO.version'/>" /> <div class="MainDiv"> <table width="99%" border="0" cellpadding="0" cellspacing="0" class="CContent"> <tr> <th class="tablestyle_title">员工信息修改</th> </tr> <tr> <td class="CPanel"> <table border="0" cellpadding="0" cellspacing="0" class="c3"> <tr> <td width="100%"> <fieldset class="c4"><legend>员工信息</legend> <input type="hidden" name='staffVO.id' value="<s:property value='staffVO.id'/>" /> <input id="sexvalue" type="hidden" name="" /> <input type="hidden" id="pozitionValue" name="" value="" /> <input type="hidden" id="teamValue" name="" value="" /> <table border="0" cellpadding="2" cellspacing="1" class="c3"> <tr> <td nowrap="nowrap" align="right">真实姓名:</td> <td><input class="text requireValid c1" name='staffVO.staffName' value="<s:property value='staffVO.staffName'/>" /> <span class="errorMsg">*</span></td> <td align="right">性别:</td> <td><select name="sex"> <option <s:if test="%{#staffVO.staffName =='male'}">selected="selected"</s:if> onchange="injectIntoForm('sexvalue','staffVO.sex','male');">男</option> <option <s:if test="%{#staffVO.staffName =='famale'}">selected="selected"</s:if> onchange="injectIntoForm('sexvalue','staffVO.sex','famale');">女</option> </select></td> <input id="sexvalue" type="hidden" name="" /> </tr> <tr> <td align="right">出生日期:</td> <td><input id="choose-birthday" class="text c1" readonly="true" name='staffVO.birthDayStr' value="<s:property value='staffVO.birthDayStr'/>" /></td> <td align="right">身份证号码:</td> <td><input class="text requireValid c1" name='staffVO.idNumber' value="<s:property value='staffVO.idNumber'/>" /> <span class="errorMsg">*</span></td> </tr> <tr> <td align="right">电子邮箱:</td> <td><input class="text c1" name='staffVO.email' value="<s:property value='staffVO.email'/>" /></td> <td align="right">电话号码:</td> <td><input class="text requireValid c1" name='staffVO.phoneNumber' value="<s:property value='staffVO.phoneNumber'/>" /> <span class="errorMsg">*</span></td> </tr> <tr> <td align="right">地址:</td> <td><input name="staffVO.address" class="text requireValid c1" type="text" value="<s:property value='staffVO.address'/>" /> <span class="errorMsg">*</span></td> <td align="right">职位:</td> <td><select id="pozitionSelect" name="pozition" onchange="setPositionValue('pozitionSelect','pozitionValue');"> <option name="staffVO.admin" <s:if test="#request.staffVO.hasAdminRole()">selected="selected"</s:if>><s:text name="ADMIN" /></option> <option name="staffVO.manager" <s:if test="#request.staffVO.hasManagerRole()">selected="selected"</s:if>><s:text name="MANAGER" /></option> <option name="staffVO.assistManager" <s:if test="#request.staffVO.hasAssistManagerRole()">selected="selected"</s:if>><s:text name="ASSISTMANAGER" /></option> <option name="staffVO.teamLeader" <s:if test="#request.staffVO.hasTeamLeaderRole()">selected="selected"</s:if>><s:text name="TEAMLEADER" /></option> <option name="staffVO.salesman" <s:if test="#request.staffVO.hasSalesmanRole()">selected="selected"</s:if>><s:text name="SALESMAN" /></option> </select></td> </tr> <tr> <td align="right">入职时间:</td> <td><input id="choose-come-day" class="text c1" readonly="true" name='staffVO.comeDayStr' value="<s:property value='staffVO.comeDayStr'/>" /></td> <td id="ownTeamLabel" align="right" class="c2" style="display: none;">所属团队</td> <td id="ownTeamSelector" class="c2" style="display: none;"><select name="staffVO.team.id"> <s:iterator value="teamList" id="teamList"> <option value="<s:property value="id"/>" <s:if test="#request.staffVO.team.teamName == #teamList.teamName">selected="selected"</s:if>><s:property value="teamName" /></option> </s:iterator> </select></td> </tr> <tr> <td align="right">描述:</td> <td colspan="3"><textarea name="staffVO.info" cols="100" rows="8"><s:property value="staffVO.info" /></textarea></td> </tr> </table> <br /> </fieldset> </td> </tr> </table> </td> </tr> <tr> <td colspan="2" align="center" height="50px"> <input type="button" name="Submit" value="保存" class="button submit" /> <input type="button" name="Submit2" value="返回" class='button' onclick="window.history.go(-1);" /></td> </tr> </table> </div> </form> </body> </html> [/code]
我最近写了个留言表 但是出现了找不到memberAction ?
1,这个是struts 配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.devMode" value="false"></constant> <package name="member" extends="struts-default" namespace="/member"> <action name="register" class="memberAction" method="registe"> <result name="success">/login.jsp</result> <result name="fail">/register.jsp</result> <result name="input">/register.jsp</result> </action> <action name="login" class="memberAction" method="login"> <result name="success" type="redirectAction"> <param name="namespace">/message</param> <param name="actionName">liuYanList</param> </result> <result name="fail">/login.jsp</result> </action> </package> <package name="message" extends="json-default" namespace="/message"> <action name="publish" class="messageAction" method="publish"> <!-- 这个action 成功后 是把数据库里面的留言抓去 放到这个成功页面 --> <result name="success" type="redirectAction"> <param name="actionName">liuYanList</param> </result> <!-- 失败还是返回这个页面 用异步提示 发送失败 所以选用json 所以这个包应该继承的是json-default --> <result name="fail" type="json"> <!-- 指定json字符串 根对象是谁 这个需要根据自己写的类来设计 --> <param name="root">errorMap</param> </result> </action> <action name="liuYanList" class="messageAction" method="liuYanList"> <result name="success">/WEB-INF/pages/message.jsp</result> </action> </package> <package name="verify" extends="json-default" namespace="/verify"> <!-- 因为我们只是生成一个校验码 所以 不用写方法 只需要excute就可以 --> <action name="code" class="verifyCodeAction"> <!-- 因为我们用的是流传输 验证码 所以 result 的类型应该是stream --> <result name="success" type="stream"> <param name="inputName">inputStream</param> </result> </action> <action name="check" class="verifyCodeAction" method="check"> <result name="success" type="json"> <param name="root">checkResult</param> </result> </action> </package> 2, 这个是登录 private static final long serialVersionUID = 7270980727777540053L; private Member member; private String rePassword; private String verifyCode;//通过属性驱动来收集页面的验证码 //保存收集到页面的数据 通过service来保存 所以就要注入一个service private MemberService memberService; public String login() { //根据一个指定的username 从数据库中 获取一个Member 对象 Member m = memberService.getMember(member.getUsername()); if (m != null) { //因为数据库里面保存的是我们加过密之后的密码 所以我们要对用户登录时输入的密码也进行加密 //这样才能比较 两个密码 String inputPassword = StringUtil.md532(member.getPassword()); if (m.getPassword().equals(inputPassword) ){ //信息完全正确 就需要把用户的信息存入session中 这样就不需要重复登录 //通过 Struts2 来访问 HttpSession 把member 的信息存放到session中 //m 是来自数据库的 有主键 id ActionContext.getContext().getSession().put("member", m); return "success"; }else { //密码错误 } }else { //输入的用户名不存在 } return "fail"; } 这个是登录页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <html> <head> <title>用户登录页面</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- 引入 CSS 文件--> <link href="${pageContext.request.contextPath }/css/style.css" type="text/css" rel="stylesheet" /> <!-- 引入JavaScript 库 --> <script src="${pageContext.request.contextPath}/jslibs/jquery-1.11.3.min.js" type="text/javascript"></script> <script type="text/javascript"> jQuery(function () { jQuery("#refresh").click(function(){ jQuery("#verify_code").attr("src","${pageContext.request.contextPath }/verify/code?suibian" + new Date()) }); jQuery("#verify_code_input").blur(function(){ //获得输入框的值 和 服务器里面的验证码进行对比 var input = jQuery("#verify_code_input").val(); //发送到服务器端 和 服务器里面的验证码进行对比 var url = "${pageContext.request.contextPath }/verify/check"; var settings={ "url":url, "type":"POST", "data":{"inputCode" : input}, "dataType":"json", "success":function( responseData ){ jQuery("#verify_code_error").html( responseData ); } }; jQuery.ajax(settings); }); }); </script> </head> <body topMargin="10"> <center> <div id="append_parent"></div> <table cellSpacing="6" cellPadding="2" width="100%" border="0"> <tbody> <tr> <td> <table class="guide" cellSpacing="0" cellPadding="0" width="100%" border="0"> <tbody> <tr> <td> <a href='index.jsp'>主页</a>&nbsp;/&nbsp; <a href='#'>留言板(malastruts)</a>&nbsp;/&nbsp;用户登录 </td> </tr> </tbody> </table> <h4 align="center">${ msg }</h4> <!--<form id="settings" action="register_action.jsp" method="post"> --> <form id="settings" action="${pageContext.request.contextPath}/member/login" method="post"> <table class="tableborder" cellSpacing="0" cellPadding="0" width="100%" border="0"> <tbody> <tr class="header"> <td colSpan="3"> 登录系统 </td> </tr> </tbody> <tbody> <tr> <td class="altbg1" width="20%"> <b>用户名称 </b> </td> <td class="altbg2" valign="middle" width="20%"> <input type="text" name="username" value="${member.username}" /> </td> <td> <span style="color: red"> <s:fielderror fieldName="username"></s:fielderror> </span> </td> </tr> <tr> <td class="altbg1" width="20%"> <b>用户密码 </b> </td> <td class="altbg2"> <input type="password" name="password"/> </td> <td> <span style="color: red"> <s:fielderror fieldName="password"></s:fielderror> </span> </td> </tr> <tr> <td class="altbg1" width="20%"> <b>验证码 </b> </td> <td class="altbg2"> <input type="text" name="verifyCode" id="verify_code_input" /> </td> <td> <!-- 我们用jquery 给这个验证码绑定一个点击事件 实现异步的验证码刷新 --> <img src="${pageContext.request.contextPath}/verify/code" id="verify_code"> <a href="javascript: " id="refresh">输入正确</a> <span style="color: red" id="verify_code_error"> <s:fielderror fieldName="verifyCode"></s:fielderror> </span> </td> </tr> </tbody> </table> <br /> <center> <input class="button" type="reset" value="重置" name="settingsubmit" /> <input class="button" type="submit" value="提交" name="settingsubmit" /> </center> </form> </td> </tr> </tbody> </table> <hr> </center> </body> </html> 3,Spring 配置 <bean id="memberAction" class="message.action.MemberAction" p:memberService-ref="memberService" scope="singleton"/> <bean id="messageAction" class="message.action.MessageAction" p:messageService-ref="messageService" scope="singleton"/> <bean id="verifyCodeAction" class="message.action.VerifyCodeAction" scope="singleton"/> 4,这个是Member 类 public class Member implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; private Integer id; //维护 Member 到 Message 一对多的关系 private Set<Message> messages;//当前会员留言 private Set<Reply> replies;//当前会员回复 public Set<Reply> getReplies() { return replies; } public void setReplies(Set<Reply> replies) { this.replies = replies; } public Set<Message> getMessages() { return messages; } public void setMessages(Set<Message> messages) { this.messages = messages; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } 启动时没有出现任何异常 就是登录的时候 会出现这个异常 type Exception report message Invalid action class configuration that references an unknown class named [memberAction] description The server encountered an internal error that prevented it from fulfilling this request. exception java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [memberAction] root cause java.lang.ClassNotFoundException: memberAction
请教一个JVM内存优化的问题
<p>自己写的一个WEB爬虫程序,程序方面的优化我自己感觉做的不错了,各种对象的使用都想办法不让内存浪费。 <br />但还是吃内存吃的很厉害 <br />我想主要的消耗在于,对于每一个爬下来的网页,都要变成String在内存中分析超链接,这个估计很大。 <br />另外对于每一个分析到的URL,都需要保存起来。 <br /><br /><br />我当前使用的内存优化参数如下 <br />-Xms1024M -Xmx1024M -Xmn512M -Xss128K -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC -XX:MaxPermSize=128M -XX:NewSize=128M -XX:MaxNewSize=128M -XX:SurvivorRatio=8 <br /><br />机器内存是1G。。上面那堆参数,除了最大最小堆内存我也是不求甚解,不是非常明白我设置了什么。网上搜答案也是五花八门,希望大家能推荐一个内存优化参数的文章 <br />另外我上面设置的参数有哪些方面可以优化,或者哪些地方写的不对。 <br /><br />核心的代码我都贴到下面:(我是刚入门的菜鸟,大家别笑话我写的差哦) <br /><br />这个是主类,负责控制,那个monitor大家就当做System.out.println,其实就是</p> <pre name="code" class="java">package com.wood.core; import java.util.concurrent.*; import java.util.*; import com.wood.core.monitor.*; public class CrawlerController implements Runnable { //一个类,用来管理URL,由各抓取线程共享 private URLMap urlmap; //已成功处理URL总数 private int count; //目标完成任务总数 private int total; //管理所有的抓取线程,必要时进行关闭,由于抓取线程存在I/O读取,而I/0读取中的线程是不可中断的,需调用线程的cancel函数 private Crawler[] crawlers; //线程工厂,可以监视产生的线程工作状态 private CrawlerFactory factory; //线程数目 private int threadMax; //当前活动线程 private int threadActive; //线程执行器 private ExecutorService exec; //当系统关闭时取消 private boolean canceled; public CrawlerController(String seed) { this(seed,20,10000); } public CrawlerController(List&lt;string&gt; seeds) { this(seeds,20,10000); } public CrawlerController(String seed,int threadNum) { this(seed,threadNum,10000); } public CrawlerController(List&lt;string&gt; seeds,int threadNum) { this(seeds,threadNum,10000); } public CrawlerController(String seed,int threadNum,int total) { //初始化URLMap,保存抓取启始位置 urlmap=new URLMap(seed); init(threadNum, total); } public CrawlerController(List&lt;string&gt; seeds,int threadNum,int total) { urlmap=new URLMap(seeds); init(threadNum, total); } //构造 private void init(int threadNum,int total) { //初始完成URL总数为0 count=0; //设置目标完成总数 this.total=total; threadMax=threadNum; threadActive=threadNum; //初始化工作线程 crawlers=new Crawler[threadMax]; String id="Crawler "; for(int i=0;i&lt;threadmax;i++) crawlers[i]="new" crawler(id+(i+1),this,urlmap);="" factory="new" crawlerfactory();="" exec="Executors.newCachedThreadPool(factory);" canceled="false;" }="" 检查当前工作线程状态,并打印系统状态="" private="" boolean="" check()="" {="" if(canceled)="" return="" false;="" int="" count="getCount();" if(count=""&gt;total) { MonitorHolder.getMonitor().print("已抓取"+COUNT+"页面,完成目标任务"+total+"页面\n"); cancel(); return false; } threadActive=factory.getActive(); /*if(threadActive&lt;=0) { MonitorHolder.getMonitor().print("无活动工作线程,抓取任务提前结束\n"); cancel(); return false; }*/ MonitorHolder.getMonitor().print_status("统计信息:成功抓取"+COUNT+"页面,当前活动线程为"+threadActive+"个\n"); return true; } //结束抓取 public void cancel() { //调用每个抓取线程的离开方法 for(Crawler cw:crawlers) cw.cancel(); //销毁工厂 factory.destory(); exec.shutdownNow(); MonitorHolder.getMonitor().print("成功结束抓取工作,共抓取"+getCount()+"页面\n"); this.canceled=true; } public synchronized void count() { count++; } public synchronized int getCount() { return count; } public int getTotal() { return total; } public URLMap getMap() { return urlmap; } @Override public void run() { while(!Thread.currentThread().isInterrupted() &amp;&amp; !canceled) { try { MonitorHolder.getMonitor().print("初始化完毕\n"); MonitorHolder.getMonitor().print("开始抓取工作\n"); for(Crawler cw:crawlers) exec.execute(cw); int check_count=0; while (check()){ TimeUnit.SECONDS.sleep(5); check_count++; if(check_count==24) { //每2分钟把待处理URL队列打乱一次 urlmap.shuffle(); MonitorHolder.getMonitor().print("控制信息!!!待抓取URL顺序将打乱\n"); check_count=0; System.gc(); } } } catch (InterruptedException e) { MonitorHolder.getMonitor().print("抓取工作被中断\n"); cancel(); } } } public static void main(String[] args) { List&lt;string&gt; seeds=new ArrayList&lt;string&gt;(15); //问问的各个分类 seeds.add("http://wenwen.soso.com/"); seeds.add("http://wenwen.soso.com/z/c1879048192.htm"); seeds.add("http://wenwen.soso.com/z/c1090519040.htm"); seeds.add("http://wenwen.soso.com/z/c1627389952.htm"); seeds.add("http://wenwen.soso.com/z/c855638016.htm"); seeds.add("http://wenwen.soso.com/z/c1191182336.htm"); seeds.add("http://wenwen.soso.com/z/c1191182336.htm"); seeds.add("http://wenwen.soso.com/z/c620756992.htm"); seeds.add("http://wenwen.soso.com/z/c553648128.htm"); seeds.add("http://wenwen.soso.com/z/c385875968.htm"); seeds.add("http://wenwen.soso.com/z/c687865856.htm"); seeds.add("http://wenwen.soso.com/z/c16777216.htm"); seeds.add("http://wenwen.soso.com/z/c318767104.htm"); seeds.add("http://wenwen.soso.com/z/c150994944.htm"); seeds.add("http://wenwen.soso.com/z/c922746880.htm"); seeds.add("http://wenwen.soso.com/z/c83886080.htm"); CrawlerController controller=new CrawlerController(seeds,5,2000000); List&lt;string&gt; format=new ArrayList&lt;string&gt;(10); //问问回答问题的格式 format.add("http://wenwen.soso.com/z/q"); controller.getMap().addLimit(format); Thread thread=new Thread(controller); thread.start(); } } </pre> <p><br /></p> <pre name="code" class="java">package com.wood.core; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.regex.*; import java.io.*; import java.net.*; import com.wood.core.monitor.*; public class Crawler implements Runnable { //抓取线程ID private String id; //控制器 private CrawlerController controller; //URL,供各线程共享 private URLMap urlmap; private boolean canceled; //保存抓取的网页内容,用于分析超链接 private String content; //字符集 private String charset; //匹配超链接的正则表达式 private String link_reg="&lt;a\\s+(.*?)href\\s*=\\s*\"?(.*?)[\"(\\s*?)](.*?)&gt;"; private Pattern link_pattern=Pattern.compile(link_reg,Pattern.CASE_INSENSITIVE); //匹配字符集的正则表达式 private String charset_reg="&lt;meta\\s+http-equiv=\"content-type\"\\s+content=\"text html;="" charset="(.*?)\&amp;quot;(.*?)"&gt; "; private Pattern charset_pattern=Pattern.compile(charset_reg, Pattern.CASE_INSENSITIVE); private Pattern dir_path_pattern=Pattern.compile("^\\w+$", Pattern.CASE_INSENSITIVE); //保存当前抓取的URL的主机 private String host; //生成待建立的文件夹名 private String host_path; //抓取网页的根目录 private String root_path="E:\\web"; private File root_dir=new File(root_path); //输入来自URL,输出到文件 private InputStreamReader in=null; private OutputStreamWriter out=null; //输入输出缓冲区 private char[] buf=new char[10240]; //网页内容缓冲区 private StringBuilder contentbuilder=new StringBuilder(1024*1024); //通过一个URL,下载网页内容 private void download(URL url) { in=null; out=null; //建立抓取文件 String urlfile=url.getFile(); if(urlfile.endsWith("/")) urlfile+="indexindex"; File file=new File(host_path,urlfile); File file_dir=new File(file.getParent()); if(!file_dir.exists()) file_dir.mkdirs(); MonitorHolder.getMonitor().print(id+"开始准备下载"+url.toString()+"\n"); try { //打开链接 URLConnection conn=url.openConnection(); //超时30秒 conn.setConnectTimeout(30000); conn.setDoOutput(true); //不是HTML不下载 /*String type=conn.getContentType(); if( (type==null)|| (!type.equals("text/html")) ) return;*/ //将网页内容的缓冲区清空 contentbuilder.setLength(0); in=new InputStreamReader(conn.getInputStream(),charset); out=new OutputStreamWriter(new FileOutputStream(file),charset); int len; //读取网页内容,并写入文件,保存到网页内容缓冲里面 while((len=in.read(buf, 0, 10240)) &gt;0) { out.write(buf, 0, len); //append可以减小系统损耗 contentbuilder.append(buf, 0, len); } out.flush(); //将网页内容缓冲区的内容读到content中,用于分析 content=null; content=contentbuilder.toString(); } catch (IOException e) { MonitorHolder.getMonitor().print("错误!!!"+id+"下载页面"+url.toString()+"错误\n"); } finally{ try { if(in!=null) in.close(); if(out!=null) out.close(); } catch (IOException e) { } in=null; out=null; } } public Crawler(String id,CrawlerController controller,URLMap urlmap) { this.id=id; this.controller=controller; this.urlmap=urlmap; this.charset="utf-8"; canceled=false; MonitorHolder.getMonitor().print(id+"就绪\n"); } //设置字符集,通过正则表达式获取字符集格式 //为了性能,该功能并未使用 private void setCharset() { Matcher matcher=charset_pattern.matcher(content); String CHARSET="GB2312"; if(matcher.find()) CHARSET=matcher.group(1).trim(); this.charset=CHARSET; try { content=new String(content.getBytes("GB2312"),CHARSET); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //从网页内容中分析超链接 private List&lt;string&gt; retrieveLinks(URL url) { List&lt;string&gt; urls=new LinkedList&lt;string&gt;(); if(content==null) return urls; Matcher matcher=link_pattern.matcher(content); String link; String host_reg="http://"+host; String host_nowww; if(host.contains("www")) host_nowww=host.substring(host.lastIndexOf("w")+2); else { host_nowww=host; } while(matcher.find()) { //通过抓取第1组的内容 link=matcher.group(2).trim().toLowerCase(); if (link.length() &lt; 1) { continue; } //网页内部链接,忽略 if (link.charAt(0) == '#') { continue; } //发送邮件链接,忽略 if (link.indexOf("mailto:") != -1) { continue; } if (link.toLowerCase().indexOf("javascript") != -1) { continue; } //分析绝对地址或相对地址 if (link.indexOf("://") == -1){ if (link.charAt(0) == '/') //处理绝对地址 link = "http://" + host+ link; else if(link.startsWith("./")) link="http://" + host+ link.substring(1); else { String file = url.getFile(); String file_path=file.substring(0, file.lastIndexOf('/')); while(link.startsWith("../")) { link=link.substring(link.indexOf("/")+1); file_path=file_path.substring(0, file_path.lastIndexOf("/")); } link="http://"+host+file_path+"/"+link; } } int index = link.indexOf('#'); if (index != -1) { link = link.substring(0, index); } if(!urlmap.testHost(link)) continue; if(!urlmap.testLimit(link)) continue; urls.add(link); } return urls; } //设置主机并建立目录 private void setHost(String host) { this.host=host; this.host_path=root_path+"\\"+host; File host_dir=new File(host_path); if(!host_dir.exists()) host_dir.mkdirs(); } @Override public void run() { if(!root_dir.exists()) root_dir.mkdirs(); while(!Thread.currentThread().isInterrupted() &amp;&amp; !canceled &amp;&amp; (controller.getCount()&lt;controller.gettotal()) )="" {="" try="" {="" 获得一个待抓取的url,如果没有可用url,则进入阻塞状态,该方法调用是线程安全的="" string="" urlstring="urlmap.getURL();" monitorholder.getmonitor().print(id+"开始抓取"+urlstring+"\n");="" 建立url="" url="" url="new" url(urlstring);="" 设置主机="" sethost(url.gethost());="" 清空网页内容,并下贼="" content="null;" download(url);="" 未下载到内容="" if(content="=null)" {="" continue;="" }="" monitorholder.getmonitor().print(id+"抓取"+urlstring+"完毕,进行解析\n");="" setcharset();="" 分析超链接="" list&lt;string=""&gt; urls=retrieveLinks(url); //将分析到的超连接加入到待抓取的URL队列中,并将成功抓取数+1 urlmap.addAll(urls); controller.count(); MonitorHolder.getMonitor().print(id+"解析"+urlstring+"完毕,共计"+urls.size()+"个超链接,开始新任务\n"); content=null; TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { MonitorHolder.getMonitor().print(id+"被中断\n"); canceled=true; } catch (MalformedURLException e) { MonitorHolder.getMonitor().print(id+"报告:URL格式错误\n"); }catch (Exception e) { e.printStackTrace(); } } } //退出,由控制器调用,关闭所有底层I/O资源 public void cancel() { try { if(in!=null) in.close(); } catch (IOException e) { } try { if(out!=null) out.close(); } catch (IOException e) { e.printStackTrace(); } MonitorHolder.getMonitor().print(id+"停止工作\n"); canceled=true; } } </pre> <p> </p> <pre name="code" class="java">package com.wood.core; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.*; import java.util.*; public class URLMap { //待抓取的URL队列 private LinkedList&lt;string&gt; URLQueue; //缓存解析出来的URL,使用Hash方便快速查找,&lt;k,false&gt;表示未抓取,&lt;k,true&gt;表示抓取结束 private HashMap&lt;string,boolean&gt; cachedURL; private HashSet&lt;string&gt; hosts; private HashSet&lt;string&gt; format_limit; //默认构造器,初始化队列,集合 private URLMap() { URLQueue=new LinkedList&lt;string&gt;(); cachedURL=new HashMap&lt;string,boolean&gt;(50000); hosts=new HashSet&lt;string&gt;(20); format_limit=new HashSet&lt;string&gt;(20); } public URLMap(List&lt;string&gt; seeds) { this(); for(String s:seeds) cachedURL.put(s, false); URLQueue.addAll(seeds); for (String string : seeds) { try { URL test=new URL(string); String host=test.getHost(); hosts.add(host); } catch (MalformedURLException e) { e.printStackTrace(); } } } public URLMap(String seed) { this(); cachedURL.put(seed, false); URLQueue.add(seed); try { URL test=new URL(seed); hosts.add(test.getHost()); } catch (MalformedURLException e) { e.printStackTrace(); } } //将解析出来的URL添加到URLMap中,如果有重复则忽略,URL有效性由外部保证,该方法是线程安全的 public synchronized void addURL(String url) throws InterruptedException { //如果该URL已存在,忽略该URL if(cachedURL.keySet().contains(url)) return; cachedURL.put(url, false); URLQueue.add(url); //有可用URL,唤醒所有阻塞线程 notifyAll(); } //将解析出来的URL添加到URLMap中,如果有重复则忽略,URL有效性由外部保证,该方法是同步的 public synchronized void addAll(List&lt;string&gt; urls) throws InterruptedException { for (String url : urls) { if(cachedURL.keySet().contains(url)) continue; cachedURL.put(url,false); URLQueue.add(url); } notifyAll(); } //从当前URL队列中获取一个URL,如果当前队列无可用URL,则该线程进入阻塞状态 public synchronized String getURL() throws InterruptedException { //该处进入阻塞 while(URLQueue.size()==0) wait(); //将其从队列中删除 String url=URLQueue.remove(); cachedURL.put(url, true); return url; } public boolean testHost(String host) { for(String host_allow:hosts) { if(host.contains(host_allow)) return true; } return false; } public void addHost(List&lt;string&gt; l) { hosts.addAll(l); } public void addLimit(List&lt;string&gt; l) { format_limit.addAll(l); } public boolean testLimit(String url) { if(format_limit.size()==0) return true; else { for(String s:format_limit) if(url.contains(s)) return true; } return false; } //将待抓取队列打乱 private int swap_check=0; public synchronized void shuffle() { swap_check++; int size=URLQueue.size(); if(size&lt;1000) { java.util.Collections.shuffle(URLQueue); swap_check=0; } else { if(size&gt;=1000 &amp;&amp; size&lt;5000) { if(swap_check==5) { java.util.Collections.shuffle(URLQueue); swap_check=0; } } else { if(swap_check==15) { java.util.Collections.shuffle(URLQueue); swap_check=0; } } } } } </pre> <p><br /><br />附件里是内存使用情况<br /><strong>问题补充</strong><br />主要占用内存的是char[] <br />我的策略是所有分析到的有效URL都存储在HashMap中 <br />但是几万个URL不至于占用大多数内存吧? <br />我的工作线程只有5个,设置的多了,一会就崩了 <br /><br />哪位高人路过,帮我看眼吧 <br />祝你新年好运~</p> <p> </p> <p>附件里是内存占用,缓存的URL总数是20000个,一个大概占用80B,程序内存总数是150MB</p> <p>我不知道到底是什么东西不停的吃内存,回收不掉,程序运行的时间越长,线程数越多,内存吃的越快</p>
Ext.Ajax.request做文件上传不执行回调函数?
我在做一个多文件上传,整体用的EXT,所以想用EXT的异步请求完成上传,上传没问题,就是上传完了,不执行回调函数,老自动弹一个下载"uploadFile.action"文件,其实就是一个json,好像是根本没执行回调函数,求各位老鸟解释下,并帮我解决,我不想别人上传完,总提示下载"uploadFile.action"。 页面代码: [code="java"] <form id="uploadForm" action="uploadFile.action"> <table border="0" cellspacing="1" class="fu_list"> <thead> <tr> <td colspan="2"><b>上传附件</b></td> </tr> </thead> <tbody> <tr> <td align="right" width="15%" style="line-height:35px;">添加附件:</td> <td><a href="javascript:void(0);" class="files" id="idFile"></a> <img id="idProcess" style="display:none;" src="../../images/upload/loading.gif" /></td> </tr> <tr id="fileList" style="display: none"> <td colspan="2"><table border="0" cellspacing="0"> <thead> <tr> <td>文件路径</td> <td width="100"></td> </tr> </thead> <tbody id="idFileList" name="idFileList"> </tbody> </table></td> </tr> <tr> <td colspan="2" style="color:gray">温馨提示:最多可同时上传 <b id="idLimit"></b> 个文件,只允许上传 <b id="idExt"></b> 文件。 </td> </tr> <tr id="uploadButton" style="display: none"> <td colspan="2" align="center" id="idMsg"><input type="button" value="开始上传" id="idBtnupload" disabled="disabled" /> &nbsp;&nbsp;&nbsp; <input type="button" value="全部取消" id="idBtndel" disabled="disabled" /> </td> </tr> </tbody> </table> </form> <SCRIPT type="text/javascript"> //以下为附件js代码 var isIE = (document.all) ? true : false; var $ = function (id) { return "string" == typeof id ? document.getElementById(id) : id; }; var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Extend = function(destination, source) { for (var property in source) { destination[property] = source[property]; } } var Bind = function(object, fun) { return function() { return fun.apply(object, arguments); } } var Each = function(list, fun){ for (var i = 0, len = list.length; i < len; i++) { fun(list[i], i); } }; //提交操作 function doUpload(){ if(Efs.getExt("uploadForm").isValid()){ myMask.show(); Ext.Ajax.request({ //请求地址 url: 'uploadFile.action', //提交参数组 fileUpload: true, form: uploadForm, scope: uploadForm, //成功时回调 success: function(response, options) { //获取响应的json字符串 myMask.hide(); var json = response.responseText; var o= Ext.util.JSON.decode(json); // var s="<s:text name="o.msg"/>"; var s=o.msg; Ext.Msg.alert('<s:text name="msg_title"/>', s); }, failure: function (response,options){ myMask.hide(); var st='<s:text name="'+o.msg+'"/>'; Ext.Msg.alert('<s:text name="msg_title"/>', st); } }); } else Ext.Msg.alert('<s:text name="msg_title"/>', '<s:text name="msg_mustFill"/>'); } //文件上传 var FileUpload = Class.create(); FileUpload.prototype = { //表单对象,文件控件存放空间 initialize: function(form, folder, options) { this.Form = $(form);//表单 this.Folder = $(folder);//文件控件存放空间 this.Files = [];//文件集合 this.SetOptions(options); this.FileName = this.options.FileName; this._FrameName = this.options.FrameName; this.Limit = this.options.Limit; this.Distinct = !!this.options.Distinct; this.ExtIn = this.options.ExtIn; this.ExtOut = this.options.ExtOut; this.onIniFile = this.options.onIniFile; this.onEmpty = this.options.onEmpty; this.onNotExtIn = this.options.onNotExtIn; this.onExtOut = this.options.onExtOut; this.onLimite = this.options.onLimite; this.onSame = this.options.onSame; this.onFail = this.options.onFail; this.onIni = this.options.onIni; if(!this._FrameName){ //为每个实例创建不同的iframe this._FrameName = "uploadFrame_" + Math.floor(Math.random() * 1000); //ie不能修改iframe的name var oFrame = isIE ? document.createElement("<iframe name=\"" + this._FrameName + "\">") : document.createElement("iframe"); //为ff设置name oFrame.name = this._FrameName; oFrame.style.display = "none"; //在ie文档未加载完用appendChild会报错 document.body.insertBefore(oFrame, document.body.childNodes[0]); } //设置form属性,关键是target要指向iframe this.Form.target = this._FrameName; this.Form.method = "post"; //注意ie的form没有enctype属性,要用encoding this.Form.encoding = "multipart/form-data"; //整理一次 this.Ini(); }, //设置默认属性 SetOptions: function(options) { this.options = {//默认值 FileName: "files",//文件上传控件的name,配合后台使用 FrameName: "",//iframe的name,要自定义iframe的话这里设置name onIniFile: function(){},//整理文件时执行(其中参数是file对象) onEmpty: function(){},//文件空值时执行 Limit: 0,//文件数限制,0为不限制 onLimite: function(){},//超过文件数限制时执行 Distinct: true,//是否不允许相同文件 onSame: function(){},//有相同文件时执行 ExtIn: [],//允许后缀名 onNotExtIn: function(){},//不是允许后缀名时执行 ExtOut: [],//禁止后缀名,当设置了ExtIn则ExtOut无效 onExtOut: function(){},//是禁止后缀名时执行 onFail: function(){},//文件不通过检测时执行(其中参数是file对象) onIni: function(){}//重置时执行 }; Extend(this.options, options || {}); }, //整理空间 Ini: function() { //整理文件集合 this.Files = []; //整理文件空间,把有值的file放入文件集合 Each(this.Folder.getElementsByTagName("input"), Bind(this, function(o){ if(o.type == "file"){ o.value && this.Files.push(o); this.onIniFile(o); } })) //插入一个新的file var file = document.createElement("input"); file.name = this.FileName; file.type = "file"; file.onchange = Bind(this, function(){ this.Check(file); this.Ini(); }); this.Folder.appendChild(file); //执行附加程序 this.onIni(); //添加附件成功,显示列表 if(this.Files.length>0){ document.getElementById('fileList').style.display=""; document.getElementById('uploadButton').style.display=""; } }, //检测file对象 Check: function(file) { //检测变量 var bCheck = true; //空值、文件数限制、后缀名、相同文件检测 if(!file.value){ bCheck = false; this.onEmpty(); } else if(this.Limit && this.Files.length >= this.Limit){ bCheck = false; this.onLimite(); } else if(!!this.ExtIn.length && !RegExp("\.(" + this.ExtIn.join("|") + ")$", "i").test(file.value)){ //检测是否允许后缀名 bCheck = false; this.onNotExtIn(); } else if(!!this.ExtOut.length && RegExp("\.(" + this.ExtOut.join("|") + ")$", "i").test(file.value)) { //检测是否禁止后缀名 bCheck = false; this.onExtOut(); } else if(!!this.Distinct) { Each(this.Files, function(o){ if(o.value == file.value){ bCheck = false; } }) if(!bCheck){ this.onSame(); } } //没有通过检测 !bCheck && this.onFail(file); }, //删除指定file Delete: function(file) { //移除指定file this.Folder.removeChild(file); this.Ini(); if(this.Folder.getElementsByTagName("input").length==1){//没有附件时隐藏 document.getElementById('fileList').style.display="none"; document.getElementById('uploadButton').style.display="none"; } }, //删除全部file Clear: function() { //清空文件空间 Each(this.Files, Bind(this, function(o){ this.Folder.removeChild(o); })); this.Ini(); document.getElementById('fileList').style.display="none";//清空同样隐藏 document.getElementById('uploadButton').style.display="none"; } } var fu = new FileUpload("uploadForm", "idFile", { Limit: 3, ExtIn: [], onIniFile: function(file){ file.value ? file.style.display = "none" : this.Folder.removeChild(file); }, onEmpty: function(){ alert("请选择一个文件"); }, onLimite: function(){ alert("超过上传限制"); }, onSame: function(){ alert("已经有相同文件"); }, // ExtIn: ["jpg", "gif"] 可以限制上传文件后缀名,不写即为所有 // onNotExtIn: function(){ alert("只允许上传" + this.ExtIn.join(",") + "文件"); }, onFail: function(file){ this.Folder.removeChild(file); }, onIni: function(){ //显示文件列表 var arrRows = []; if(this.Files.length){ var oThis = this; Each(this.Files, function(o){ var a = document.createElement("a"); a.innerHTML = "取消"; a.href = "javascript:void(0);"; a.onclick = function(){ oThis.Delete(o); return false; }; arrRows.push([o.value, a]); }); } else { arrRows.push(["<font color='gray'>没有添加文件</font>", "&nbsp;"]); } AddList(arrRows); //设置按钮 //$("idBtnupload").disabled = $("idBtndel").disabled = this.Files.length <= 0; } }); $("idBtnupload").onclick = function(){ //显示文件列表 var arrRows = []; Each(fu.Files, function(o){ arrRows.push([o.value, "&nbsp;"]); }); AddList(arrRows); fu.Folder.style.display = "none"; $("idProcess").style.display = ""; $("idMsg").innerHTML = "正在添加文件到您的网盘中,请稍候……<br />有可能因为网络问题,出现程序长时间无响应,请点击“<a href='?'><font color='red'>取消</font></a>”重新上传文件"; doUpload(); $("idProcess").style.display = "none"; //fu.Form.submit(); } //用来添加文件列表的函数 function AddList(rows){ //根据数组来添加列表 var FileList = $("idFileList"), oFragment = document.createDocumentFragment(); //用文档碎片保存列表 Each(rows, function(cells){ var row = document.createElement("tr"); Each(cells, function(o){ var cell = document.createElement("td"); if(typeof o == "string"){ cell.innerHTML = o; }else{ cell.appendChild(o); } row.appendChild(cell); }); oFragment.appendChild(row); }) //ie的table不支持innerHTML所以这样清空table while(FileList.hasChildNodes()){ FileList.removeChild(FileList.firstChild); } FileList.appendChild(oFragment); } $("idLimit").innerHTML = fu.Limit; $("idExt").innerHTML = fu.ExtIn.join(","); $("idBtndel").onclick = function(){ fu.Clear(); } //在后台通过window.parent来访问主页面的函数 //function Finish(msg){ alert(msg); location.href = location.href; } <SCRIPT> [/code] struts配置文件(用的插件自动生成json): [code="java"] <action name="*File" method="{1}" class="com.web.action.UploadFile"> <result type="json" name="success"> <param name="includeProperties">msg</param> <param name="excludeNullProperties">true</param> </result> <result type="json" name="error"> <param name="includeProperties">msg</param> <param name="excludeNullProperties">true</param> </result> </action> [/code] 后台UploadFile.java的代码 [code="java"] package com.web.action; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.common.pojo.AppUser; import com.opensymphony.xwork2.ActionContext; /** * 负责文件的上传 */ public class UploadFile { private File[] files; private String[] filesFileName; private Map<String, String> filesPath;// 文件名及其上传后路径 private String msg; public String upload() { /* * Map session=ActionContext.getContext().getSession(); AppUser * user=(AppUser) session.get("user"); if(user==null){ return "error"; } */ msg="上传成功!"; for (int i = 0; i < files.length; i++) { fileCopy(files[i], filesFileName[i]); } return "success"; } private void fileCopy(File file, String fileName) { BufferedInputStream bis = null; BufferedOutputStream bos = null; String realPath = ServletActionContext. getServletContext().getRealPath("/upload/" + fileName); System.out.println(realPath); try { bis = new BufferedInputStream(new FileInputStream(file)); bos = new BufferedOutputStream(new FileOutputStream(new File( realPath))); byte[] buffer = new byte[1024 * 8]; int i = -1; while ((i = bis.read(buffer)) != -1) { bos.write(buffer,0,i); } bos.flush(); } catch (Exception e) { System.out.println("上传异常!"); msg="上传出错!"; e.printStackTrace(); }finally{ try { if (bis != null) bis.close(); if (bos != null) bos.close(); } catch (IOException e1) { System.out.println("上传结束异常!"); e1.printStackTrace(); } } } public File[] getFiles() { return files; } public void setFiles(File[] files) { this.files = files; } public String[] getFilesFileName() { return filesFileName; } public void setFilesFileName(String[] filesFileName) { this.filesFileName = filesFileName; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } [/code]
请教个jquery的问题,本人新手,怕描述不清,看图说话。
<p><br><img src="http://dl.iteye.com/upload/attachment/227335/330258b7-15f5-371c-a7d0-c05b8c9a9dfb.jpg" alt=""></p> <p>  上图是页面的部分效果,因为每次输入的的数据很多字段是重复的, 偶尔需要修改。 </p> <p>  我想做到得效果是在红圈处增加一个按钮,每点击下,在下面的表单初始化一新行,数据为该行上一行的数据。</p> <p>代码如下:</p> <pre name="code" class="js">&lt;html &gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"/&gt; &lt;!-- 引入JSCal2-1.7 --&gt; &lt;script language="JavaScript" src="/myproject/plugins/JSCal2-1.7/src/js/jscal2.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="/myproject/plugins/JSCal2-1.7/src/js/lang/cn.js" charset="utf-8"&gt;&lt;/script&gt; &lt;link rel="stylesheet" type="text/css" href="/myproject/plugins/JSCal2-1.7/src/css/jscal2.css" /&gt; &lt;script type="text/javascript" src="/myproject/plugins/EventUtil/EventUtil.js"&gt;&lt;/script&gt; &lt;link rel="stylesheet" href="/myproject/plugins/slick.grid/css/slick.grid.css" type="text/css" media="screen" charset="gb2312" /&gt; &lt;link rel="stylesheet" href="/myproject/plugins/slick.grid/css/examples.css" type="text/css" media="screen" charset="gb2312" /&gt; &lt;link rel="stylesheet" href="/myproject/plugins/jquery-message/jquery.message.css" type="text/css" media="screen" charset="gb2312" /&gt; &lt;!-- 引入jQuery --&gt; &lt;script language="JavaScript" src="/myproject/plugins/jQuery/js/jquery-1.3.2.min.js"&gt;&lt;/script&gt; &lt;!-- 引入JSON --&gt; &lt;script language="JavaScript" src="/myproject/plugins/json/json2.js"&gt;&lt;/script&gt; &lt;!-- 引入Slick.Grid --&gt; &lt;script language="JavaScript" src="/myproject/plugins/slick.grid/js/firebugx.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="/myproject/plugins/slick.grid/js/jquery.getScrollbarWidth.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="/myproject/plugins/slick.grid/js/jquery.rule-1.0.1-min.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="slick.editors.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="/myproject/plugins/slick.grid/js/slick.grid.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="/myproject/plugins/slick.grid/js/slick.globaleditorlock.js"&gt;&lt;/script&gt; &lt;script language="JavaScript" src="/myproject/plugins/validator/validator.js"&gt;&lt;/script&gt; &lt;!-- 引入jquery-message --&gt; &lt;script src="/myproject/plugins/jquery-message/jquery.message.js" type="text/javascript"&gt;&lt;/script&gt; &lt;style&gt; #result { background: white; outline: 1px; border: 1px solid gray; width:99%; height:400px; } &lt;/style&gt; &lt;script&gt; /////////////////////////////////////////////////////////////////////////// //////////////////////////////全局信息定义///////////////////////////////// //数据状态 var RAW = 0; //原始 var NEW = 1; //新增 var MODIFIED = 2; //被修改 var DELETED = 3; //删除 var G_PrevRow = -1; //前一工作行 var G_LastRow = -1; //最后提交的行 var G_IsModified = false;//文档状态 var G_IsReady = true; //工作行是否处理就绪 var G_Current = new Date();//当前时间 var G_GridData = [];//表格基础数据 var G_DeletedRows = [];//需要服务器提交行ID列表 var G_DeleteItemRowNumbers = [];//需要服务器提交行序号列表 var G_PositionList = []; &lt;#if position?exists&gt; &lt;#list position as item&gt; G_PositionList[G_PositionList.length]="${item.position}"; &lt;/#list&gt; &lt;/#if&gt; var G_Grid; var G_Columns = [ {id:"select", name:"&lt;center&gt;&lt;INPUT id='selectAll' type='checkbox' value='true' class='editor-checkbox' hideFocus&gt;&lt;/center&gt;", width:30, formatter:SelectCellFormatter}, {id:"persName", name:"姓名", field:"persName", editor:TextCellEditor, validator : requiredFieldValidator}, {id:"sex", name:"性别", field:"sex", editor:SexSelectCellEditor, validator : requiredFieldValidator}, {id:"nation", name:"民族", field:"nation", editor:TextCellEditor}, {id:"birthPlace", name:"籍贯", field:"birthPlace", editor:TextCellEditor}, {id:"birthday", name:"出生年月", field:"birthday", width:120,editor:DateCellEditor}, {id:"idCard", name:"工种", field:"idCard", editor:PositionSelectCellEditor, validator : requiredFieldValidator}, {id:"workTime", name:"参加工作时间", field:"workTime", width:120,editor:DateCellEditor, validator : requiredFieldValidator}, {id:"position", name:"职位", field:"position", editor:TextCellEditor}, {id:"joinOrg", name:"所在部门", field:"joinOrg", editor:TextCellEditor, validator : requiredFieldValidator}, {id:"joinTime", name:"加入本部门时间", field:"joinTime", width:120,editor:DateCellEditor}, {id:"political", name:"政治面貌", field:"political", editor:TextCellEditor}, {id:"education", name:"文化程度", field:"education", editor:TextCellEditor}, {id:"techHera", name:"技术等级", field:"techHera", editor:TextCellEditor}, {id:"address", name:"住址", field:"address", editor:TextCellEditor}, {id:"tel", name:"联系电话", field:"tel", editor:TextCellEditor} ]; var G_Options = { editable: true, enableAddRow: true, enableCellNavigation: true, asyncEditorLoading: false }; //////////////////////////////全局信息定义结束///////////////////////////////// /////////////////////////////////////////////////////////////////////////// //文档加载完成 $(function() { $("#query").click(function(){ if(G_IsModified) { if(!confirm("数据已经修改,要放弃修改吗?")) { return; } } initData(); query(); }); init(); $("#view").click(function(){ view(); }); $("#account").click(function(){ account(); }); $("#save").click(function(){ if(validateCurrentRow()) { //alert(JSON.stringify(G_GridData)); //commitDelete(G_DeletedRows); //commitUpdate(G_GridData); //commitAdd(G_GridData); } }); //删除所选 $("#delete").click(function(){ if(validateCurrentRow()) { //全部待删除记录行序号列表 var deleteItems = []; $(":input[name='item'][checked='true']").each(function(){ deleteItems[deleteItems.length] = $(this).attr("id"); }); //排序待删除行序号 deleteItems.sort(sortNumber); for(var i = deleteItems.length; i &gt;0; i--) { var rowNumber = deleteItems[i - 1]; var row = G_GridData[rowNumber]; if(NEW != row.flag) { G_DeletedRows[G_DeletedRows.length] = row.persId; G_DeleteItemRowNumbers[G_DeleteItemRowNumbers.length] = rowNumber; } else { G_Grid.removeRow(rowNumber); G_GridData.splice(rowNumber, 1); } } //向服务器提交删除请求 $.post("/myproject/cm/zyn/cm_perInfo/deleteBatch.action", { "queryCondition.items": JSON.stringify(G_DeletedRows) }, function(data){ G_DeletedRows.splice(0, G_DeletedRows.length); if(!data.result) { $().message(data.message + "&lt;a href='javascript:$().message(data.detail)'&gt;\&gt;\&gt;&lt;/a&gt;"); } else { $().message(data.message + "&lt;a href='javascript:$().message(data.detail)'&gt;\&gt;\&gt;&lt;/a&gt;"); //服务器响应删除成功后,删除表格中的实际数据 for(var i = 0; i &lt; G_DeleteItemRowNumbers.length; i++) { G_Grid.removeRow(G_DeleteItemRowNumbers[i]); G_GridData.splice(G_DeleteItemRowNumbers[i], 1); } } G_DeleteItemRowNumbers.splice(0, G_DeleteItemRowNumbers.length); G_Grid.resizeCanvas(); G_Grid.render(); }, "json" ); G_Grid.resizeCanvas(); G_Grid.render(); } }); }) //初始化全局控制数据 function initData() { G_PrevRow = -1; G_IsModified = false; G_Current = new Date() G_GridData = []; G_DeletedRows = []; G_DeleteItemRowNumbers = []; } //初始化页面 function init() { query(); } //批量提交更新记录 function commitUpdate(items) { var updateList = []; for(var i = 0; i &lt; items.length; i++) { if(items[i].flag == MODIFIED) { updateList[updateList.length] = items[i]; } } if(updateList.length &gt; 0) { $.post("/myproject/cm/zyn/cm_perInfo/updateBatch.action", { "queryCondition.items": encodeURIComponent(JSON.stringify(updateList)) }, function(data){ if(!data.result) { $().message(data.message.message); } else { items.splice(0, items.length); } }, "json" ); } } //批量提交新增记录 function commitAdd(items) { var newList = []; for(var i = 0; i &lt; items.length; i++) { if(items[i].flag == NEW) { newList[newList.length] = items[i]; } } alert(JSON.stringify(newList)); if(newList.length &gt; 0) { $.post("/myproject/cm/zyn/cm_perInfo/addBatch.action", { "queryCondition.items": encodeURIComponent(JSON.stringify(newList)) }, function(data){ if(!data.result) { alert(data.message); } else { items.splice(0, items.length); } }, "json" ); } } //提交删除操作 function commitDelete(items) { $.post("/myproject/cm/zyn/cm_perInfo/deleteBatch.action", { "queryCondition.items": JSON.stringify(items) }, function(data){ if(!data.result) { alert(data.message); } else { items.splice(0, items.length); } }, "json" ); } //按照当前条件查询 function query() { $.post("/myproject/cm/zyn/cm_perInfo/searchAllPer.action", { "queryCondition.page": 1, "queryCondition.startTime": $("#startTime").val(), "queryCondition.endTime": $("#endTime").val() }, function(data){ G_GridData = data; initDataState(G_GridData); if(G_Grid)G_Grid.destroy(); G_Grid = new SlickGrid($("#result"), G_GridData, G_Columns, G_Options); G_Grid.onValidationError = function(elem, validationResults, row, cell, cellInfo) { $().message(validationResults.msg); } //新增一行事件处理 G_Grid.onAddNewRow = function(cellInfo, value) { if(G_IsReady) { G_IsModified = true; var item = {persId : "-1", flag : NEW, persName : "", sex : "", nation : "", birthPlace : "", birthday : formatDate(G_Current), idCard : "", workTime : formatDate(G_Current), position : "", joinOrg : "", joinTime : formatDate(G_Current),political : "", education : "", techHera : "", address : "", tel : "" }; item[cellInfo.field] = value; data[data.length] = item; G_Grid.resizeCanvas(); G_Grid.render(); G_Grid.updateRow(data.length-1); } } //工作行变化事件处理 G_Grid.onSelectedRowsChanged = function(){ G_IsReady = false;//工作行处理开始 currentRow = G_Grid.getSelectedRows(); if(G_PrevRow != -1 &amp;&amp; G_GridData[G_PrevRow] &amp;&amp; G_PrevRow != currentRow[0]) { if(validateRow(G_Grid, G_PrevRow, G_GridData[G_PrevRow], G_Columns)) { G_IsReady = true; saveLastRow(); G_PrevRow = currentRow; } } else { G_IsReady = true; G_PrevRow = currentRow; } } //全部选择/取消 $("#selectAll").click(function(){ var state = $(this).attr("checked"); $("input[name='item']").each(function(){ $(this).attr("checked", state); }); }); }, "json" ); } //保存最近一行 function saveLastRow() { G_LastRow = G_PrevRow; var row = G_GridData[G_PrevRow]; if(row) { switch(row.flag) { case NEW: $.post("/myproject/cm/zyn/cm_perInfo/add.action", { "queryCondition.items": encodeURIComponent(JSON.stringify(row)) }, function(data){ G_IsModified = false; $().message(data.message); if(data.result) { G_GridData[G_LastRow].persId = data.detail; G_GridData[G_LastRow].flag = RAW; } }, "json" ); break; case MODIFIED: $.post("/myproject/cm/zyn/cm_perInfo/update.action", { "queryCondition.items": encodeURIComponent(JSON.stringify(row)) }, function(data){ G_IsModified = false; if(!data.result) { $().message(data.message); } else { $().message(data.message + "ddf" + "&lt;a href='javascript:$().message(data.detail)'&gt;xx&lt;/a&gt;"); G_GridData[G_LastRow].flag = RAW; } }, "json" ); break; default: break; } } } //为按钮校验当前行 function validateCurrentRow() { var result = true; G_Grid.commitCurrentEdit(); if(!validateRow(G_Grid, G_PrevRow, G_GridData[G_PrevRow], G_Columns)) { result = false; } return result; } //对row行进行有效性检验,失败后定位到失败cell function validateRow(grid, rowNumber, row, columnDef) { var result = true; if(columnDef &amp;&amp; rowNumber &gt; -1) { for(var i = 0; i &lt; columnDef.length; i++) { if(columnDef[i].validator &amp;&amp; columnDef[i].field) { var validationResults = columnDef[i].validator(row[columnDef[i].field]); if(!validationResults.valid) { var currentCellNode = grid.gotoCell(rowNumber, i); $(currentCellNode).addClass("invalid"); if (grid.onValidationError) grid.onValidationError(currentCellNode, validationResults, rowNumber, i, columnDef[i]); result = false; break; } } } } return result; } function sortNumber(a, b) { return a - b } function initDataState(data) { for(var i = 0; i &lt; data.length; i++) { data[i]["flag"] = RAW; } } //获取当前日期所处报表段的起始日期 function generateStartTime(current) { var year = current.getYear(); year = (year &lt; 1900) ? (1900 + year) : year; var month = current.getMonth() + 1; var day = 0; var segment = (current.getDate() - 1) / 5; segment = segment &gt; 5 ? 5 : Math.floor(segment); day = segment * 5 + 1; return year + "-" + month + "-" + day; } //获取当前日期所处报表段的结束日期 function generateEndTime(current) { var year = current.getYear(); year = (year &lt; 1900) ? (1900 + year) : year; var month = current.getMonth() + 1; var day = ""; var segment = (current.getDate() - 1) / 5; segment = segment &gt; 5 ? 5 : Math.floor(segment); day = segment * 5 + 5; return year + "-" + month + "-" + day; } //生成YY-MM-DD格式的日期字符串 function formatDate(date) { var year = date.getYear(); var month = date.getMonth() + 1; var day = date.getDate(); return year + "-" + month + "-" + day; } function view(){ window.self.location = "goSearch.action"; } function account(){ window.self.location = "goAccountPer.action"; } ///////////////////////检验函数//////////////////////////////////////////////// function requiredFieldValidator(value){ return isEmpty(value) ? {valid:false, msg:"不能为空"} : {valid:true, msg:null}; } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;#if output?exists&gt; &lt;form id="search"&gt; &lt;div class="title" align="center"&gt;&amp;nbsp;&amp;nbsp;煤质人员基本信息&lt;/div&gt; &lt;div class="toolbarTop"&gt; &lt;div id="tools"&gt; &lt;tr&gt; &lt;td width="50"&gt;&lt;input type="button" id="delete" value="删除"/&gt;&lt;/td&gt; &lt;td width="50"&gt;&lt;input type="button" id="view" value="查询"/&gt;&lt;/td&gt; &lt;td width="50"&gt;&lt;input type="button" id="account" value="生成台账"/&gt;&lt;/td&gt; &lt;/div&gt; &lt;div id="pagination" style="float : right;"&gt;&lt;/div&gt; &lt;/div&gt; &lt;/form&gt; &lt;div id="result"&gt;&lt;/div&gt; &lt;/#if&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p> </p>
求助一个php正则表达式的问题
有一个形式类似下面的字符串 ``` <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&2%2C2%2C">微信公众号营销一本通</a></span> 我想在php环境中用正则表达式匹配出其中书名(微信公众号营销一本通)部分,请问应该怎么写这个正则表达式 更新,整个html文件源代码: <html dir="LTR"> <head> <title>Jinan University Library /All Locations</title> <base target="_self"/> <link rel="stylesheet" type="text/css" href="/scripts/ProStyles.css" /> <link rel="stylesheet" type="text/css" href="/screens/styles.css" /> <link rel="shortcut icon" type="ximage/icon" href="/screens/favicon.ico" /> <script type="text/javascript" src="/scripts/common.js"></script> <script type="text/javascript" src="/scripts/features.js"></script> <script type="text/javascript" src="/scripts/elcontent.js"></script> <script type="text/JavaScript"> <!-- Hide the JS startTimeout(6000000, "/"); // --> </script> <noscript> <meta http-equiv="Refresh" content="6000;URL=/" /> </noscript> <script type="text/javascript" src="/screens/bibdisplay.js"></script><meta name="renderer" content="webkit|ie-comp|ie-stand"> </head> <body bgcolor="#FFFFFF" > <!-- begin toplogo_chx.html file --> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 19 August 2008 --> <script language="JavaScript" type="text/javascript" src="/screens/jquery-1.10.1.min.js"></script> <script language="JavaScript" type="text/javascript" src="/screens/related.js"></script> <script language="JavaScript" type="text/javascript" src="/screens/libinfo.js"></script> <script language="JavaScript" type="text/javascript" src="/screens/searcharg.js"></script> <div class="topLogoDiv"> <div id="skipNav"><a href="#content">跳至內容</a></div> <div class="floatRight"> <ul id="headerNav"> <li class="headerNavFirst"><a href="/*chx">馆藏检索主页</a></li> <li><a href="/screens*chx/help_index_chx.html">帮助</a></li> <li><a href="/patroninfo*chx">登录</a></li> <li><a href="http://opac.jnu.edu.cn/*eng"><font color="#990000"><strong>English</strong></font></a></li> </ul> </div> <a href="/*chx"><img src="/screens/logo.gif" alt="2007 WebPAC PRO"/></a> </div> <div class="clear"> <!-- content div --> <div class="pageNavColumn"><!-- nav menu column--> <span id="limit"></span> <!-- <div id='limit' class="navHeader" style='width:100%;background-color:#D2E0E7; border:1px #666666; text-align:left;'><font size="4"><strong>精确查询,依照:</strong></font></div> <h1 class="navHeader"><font size="3">从哪里查找</font></h1> <ul class="leftCol"> <li><span id="keyword" ></span></li> <li><span id="title" ></span></li> <li><span id="subject"></span></li> <li><span id="author"></span></li> <li><span id="isbnsea"></span></li> <li><span id="callno"></span></li> <li><a href="/search*chx/g">政府文件</a></li> </ul> --> <div id="JNU_QRCode" style="display:none"> </div> <div id="libinfo"></div> <div id="relate"></div> <!-- <h1 class="navHeader"><font size="3">出版年份</font></h1> <ul class="leftCol"> <li style="list-style:none; padding:2px; color:#000"><span id="2009" ></span></li> <li><span id="2008"></span></li> <li><span id="2007"></span></li> <li><span id="2006"></span></li> <li><span id="course"></span></li> <li><a href="/suggest*chx">评论</a></li> </ul> --> <div class="navHeader" style='width:100%;background-color:#D2E0E7; border:1px #666666; text-align:left;'><font size="4"><strong>个性化服务</strong></font></div> <!--<h1 class="navHeader"><font size="3">你的图书馆</h1>--> <ul class="leftCol"> <li><a href="/patroninfo*chx">我的帐户</a></li> <li><a href="/acquire*chx">好书荐购</a></li> <li><a href="/search*chx/X">高级检索</a></li> <li><a href="http://202.116.13.252/newbook/newbook">新书通报</a></li> <li><a href="http://202.116.13.252/reading/" target="_blank"><font color="#990000"><strong>外借排行榜</strong></font></a></li> <li><a href="http://lib.jnu.edu.cn">图书馆主页</a></li> <li><a href="http://toolbar.google.com/buttons/add?url=http://opac.jnu.edu.cn/screens/JNULOPAC.xml">添加OPAC检索按钮到Google工具栏</a></li> <li><a href="http://mycroft.mozdev.org/search-engines.html?name=%E6%9A%A8%E5%8D%97%E5%A4%A7%E5%AD%A6%E5%9B%BE%E4%B9%A6%E9%A6%86" target="_blank" title="点击暨南大学图书馆链接安装插件">OPAC的Firefox搜索引擎插件</a></li> <li><a href="http://202.116.13.41/libStu/video.jsp" target="_blank" title="新生入馆视频指南">新生入馆视频指南</a></li> <li><a href="http://lib.jnu.edu.cn/help/HelpInfo.action?id=34" target="_blank" title="随书光盘系统使用帮助">随书光盘系统使用帮助</a></li> <li><a href="http://202.116.13.4/show.jsp?ID=1339" target="_blank" title="暨南大学图书馆无线网络使用帮助">暨南大学图书馆无线网络使用帮助</a></li> <li><a href="http://lib.jnu.edu.cn/feedback/feedbackList.action?sysid=42&itemid=0" target="_blank"><img src="/screens/aa.gif" /></a></li> <!-- <li><a href="/illb*chx">馆际互借</a></li> <li><a href="/suggest*chx">评论</a></li> </ul> <li><a href="/selfreg*chx">开一个帐户</a></li> <h1 class="navHeader">图书馆链接</h1> <ul class="leftCol"> --> <!--<li><a href="http://toolbar.google.com/buttons/add?url=http://opac.jnu.edu.cn/screens/JNULOPAC.xml" onMouseOver="AdLayer.style.display='inline'" onmouseout="AdLayer.style.display='none'"><font color="#990000"><strong>添加OPAC检索按钮到Google工具栏</strong></font></a></li> --> <!-- <li><a href="/feeds*chx">Feeds</a></li> <li><a href="/screens*chx/rpro_chx.html">Research Pro</a></li> <li><a href="/iii/calendar">活动日程</a></li> <li><a href="/*chx">KidsOnline</a></li> <li><a href="/ftlist*chx">专题馆藏/新书通告</a></li> <li><a href="/screens*chx/resources_index_chx.html">其他资源</a></li> --> <!-- </ul> <h1 class="navHeader">指定参考书</h1> <ul class="leftCol"> <li><a href="/search*chx/r">课程搜索</a></li> <li><a href="/search*chx/p">教师搜索</a></li> --> </ul> </div><!--Styling div--> <!-- 当时用于显示google按钮的 鼠标动作 <div style='position:absolute; width:250px; height:143px; z-index:20; left: 987px; top: 448px;'> <table id="AdLayer" name="AdLayer" border="0" style="display:none"> <tr> <td ><font size="2"> **&#x70B9;&#x51FB;JNUOPAC&#x6309;&#x94AE;&#xFF0C;&#x76F4;&#x63A5;&#x6253;&#x5F00;&#x66A8;&#x5357;&#x5927;&#x5B66;&#x56FE;&#x4E66;&#x9986;&#x4E66;&#x76EE;&#x68C0;&#x7D22;&#x9875;&#x9762;</br></br> **&#x5982;&#x5728;google&#x68C0;&#x7D22;&#x6846;&#x8F93;&#x5165;&#x68C0;&#x7D22;&#x5185;&#x5BB9;&#xFF0C;&#x70B9;&#x51FB;JNUOPAC&#x6309;&#x94AE;&#xFF0C;&#x5C06;&#x4F1A;&#x8FD4;&#x56DE;&#x66A8;&#x5357;&#x5927;&#x5B66;&#x56FE;&#x4E66;&#x9986;&#x4E66;&#x76EE;&#x7684;&#x68C0;&#x7D22;&#x5185;&#x5BB9;&#x3002;</font></td> </tr> </table> </div>--> <div class="pageContentColumn"><!-- content container --> <a name="content"></a> <!--end toplogo_chx.html--> <div align="center" class="navigationRow"> <form> <a href="/search~S1*chx"><img src="/screens/startover_chx.gif" alt="重新检索" border="0" /></a> <a href="/search~S1*chx/X?NOSRCH={u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1"><img src="/screens/modify_chx.gif" alt="修改检索" border="0" /></a> <a href="/search~S1*chx/X"><img src="/screens/another_chx.gif" alt="再次检索" border="0" /></a> <select name=HISTORY onChange="onSelectChange(this, '~S1*chx')"><option value="">(检索历史)</option> <OPTION VALUE="X{u5FAE}{u4FE1}&searchscope=1&SORT=D">关键字: 微信 在 全部馆藏 <option value="+/search~S1*chx/X?{u5FAE}{u4FE1}&searchscope=1&SORT=D&clear_history">(清除检索历史)</option> <option value="+/*chx">(结束检索进程)</option> </select> <noscript> <h2>搜索历史功能需要JavaScript。</h2> </noscript> </form> </div> <!-- BEGIN BROWSE SCREEN TABLE --> <table width="100%" cellpadding="2" cellspacing="0" border="0" class="browseScreen"> <!-- BEGIN SEARCH WIDGET --> <div align="center"> <tr align="center" valign="middle"> <td valign="middle" colspan="2"> <div class="browseSearchtool"> <script type="text/JavaScript"> <!-- Hide the JS var savedScope; var savedTag; var savedSearch; var sortButtonText = null; var savedExactSearch = null; var sortButtonEvent = null; var sortExactBrowseURL = null; var sortTypes = new Array(); var sortLabels = new Array(); sortTypes[0] = "t"; sortLabels[0] = "题名"; sortTypes[1] = "a"; sortLabels[1] = "作者"; sortTypes[2] = "c"; sortLabels[2] = "出版年升序"; sortTypes[3] = "r"; sortLabels[3] = "出版年降序"; sortTypes[4] = "n"; sortLabels[4] = "索书号"; sortTypes[5] = "m"; sortLabels[5] = "载体类型"; sortLabels[6] = "系统排序"; sortTypes[6] = "-"; var sortSelectedValue = "6"; var nonSortTags = "XYZprWw" // Unhide the JS --> </script> <form name="searchtool" target="_self" action="/search~S1*chx/" method='GET'> <label for="searchtype" style="display:none;">SearchType</label> <select name="searchtype" id="searchtype" onChange="initSort()"> <option value="a"> 著者</option> <option value="t"> 题名</option> <option value="d"> 主题</option> <option value="c"> 索书号</option> <option value="i"> 标准号</option> <option value="X" selected="selected"> 关键字</option> </select> &nbsp; <label for="searcharg" style="display:none;">Search</label><input type="text" name="searcharg" id="searcharg" size="30" onchange='return searchtoolSubmitAction()'maxlength="75" value="微信" /> &nbsp; <label for="searchscope" style="display:none;">Search Scope</label><select name="searchscope" id="searchscope"> <option value="1" selected="selected"> 全部馆藏</option> <option value="4"> 本部主要书籍</option> <option value="3"> 本部期刊和报纸</option> <option value="2"> 本部电子资源</option> <option value="7"> 深圳旅游学院</option> <option value="6"> 华文学院图书馆</option> <option value="5"> 暨南文库</option> <option value="8"> 大学城校区</option> </select> &nbsp; <span id="sort_cell"> </span> <script type="text/JavaScript"> <!-- Hide the JS initSort(); // Unhide the JS --> </script> <input type="hidden" name="SORT" value="DZ" /><input type="hidden" name="extended" value="0" /> <input type="submit" name="SUBMIT" value="检索" onclick='return searchtoolSubmitAction();' /> <div> <input type="checkbox" name="availlim" value="1" /> <span class="availLimMessage">只检索可借图书</span><br/> </div> <div> <input type="hidden" name="searchlimits" value="" /> <input type="hidden" name="searchorigarg" value="X{u5FAE}{u4FE1}" /> </div> </form> <div class="browseSearchtoolMessage"> <i>找到 2609 条记录 </i>排序依据 <strong>相关度</strong> | <a href="/search~S1*chx/X?{u5FAE}{u4FE1}&searchscope=1&SORT=DX">日期</a> | <a href="/search~S1*chx/X?{u5FAE}{u4FE1}&searchscope=1&SORT=AX">题名</a> . </div> <div></div></div> </td> </tr> </div> <!-- END SEARCH WIDGET --> <!-- BEGIN BROWSE PAGER --> <!-- begin page widgit --> <tr class="browsePager"><td align="center" class="browsePager" colspan="5"> 结果页面&nbsp;&nbsp;&nbsp;<strong>1</strong> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/13%2C2609%2C2609%2CB/browse">2</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/25%2C2609%2C2609%2CB/browse">3</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/37%2C2609%2C2609%2CB/browse">4</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/49%2C2609%2C2609%2CB/browse">5</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/61%2C2609%2C2609%2CB/browse">6</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/73%2C2609%2C2609%2CB/browse">7</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/85%2C2609%2C2609%2CB/browse">8</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/97%2C2609%2C2609%2CB/browse">9</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/109%2C2609%2C2609%2CB/browse">10</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/121%2C2609%2C2609%2CB/browse">11</a> ... <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/2605%2C2609%2C2609%2CB/browse">218</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/13%2C2609%2C2609%2CB/browse">下一页</a> <!-- end page widgit --> </td> </tr> <!-- END BROWSE PAGER --> <style type="text/css"> <!-- #rategroup1 { display: inline } #rateneed1 { display: none } #rategroupMy1 { display: none } #ratemy1 { display: inline } #rategroup2 { display: inline } #rateneed2 { display: none } #rategroupMy2 { display: none } #ratemy2 { display: inline } #rategroup3 { display: inline } #rateneed3 { display: none } #rategroupMy3 { display: none } #ratemy3 { display: inline } #rategroup4 { display: inline } #rateneed4 { display: none } #rategroupMy4 { display: none } #ratemy4 { display: inline } #rategroup5 { display: inline } #rateneed5 { display: none } #rategroupMy5 { display: none } #ratemy5 { display: inline } #rategroup6 { display: inline } #rateneed6 { display: none } #rategroupMy6 { display: none } #ratemy6 { display: inline } #rategroup7 { display: inline } #rateneed7 { display: none } #rategroupMy7 { display: none } #ratemy7 { display: inline } #rategroup8 { display: inline } #rateneed8 { display: none } #rategroupMy8 { display: none } #ratemy8 { display: inline } #rategroup9 { display: inline } #rateneed9 { display: none } #rategroupMy9 { display: none } #ratemy9 { display: inline } #rategroup10 { display: inline } #rateneed10 { display: none } #rategroupMy10 { display: none } #ratemy10 { display: inline } #rategroup11 { display: inline } #rateneed11 { display: none } #rategroupMy11 { display: none } #ratemy11 { display: inline } #rategroup12 { display: inline } #rateneed12 { display: none } #rategroupMy12 { display: none } #ratemy12 { display: inline } --> </style> <!-- BEGIN BROWSE SCREEN LEFT CELL: BROWSELIST/BRIEFCIT AREA --> <tr><td> <table border="2" cellpadding="3" width="100%"> <tr align="CENTER" valign="MIDDLE"> <td colspan="5" class="browseSaveJump"> <form method="POST" action="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse" name="export_form" id="export_form" > <input type="hidden" name="jumpref" value="X{u5FAE}{u4FE1}"> <input type="hidden" id="save_func" name="save_func" value=""/> <a href="#" onclick="process_save(0);" style="text-decoration:none"> <img src="/screens/savemarked_chx.gif" alt="保存选择" class="button" width="120" height="20" border="0" /></a> <span name='save_page_btn1' id='save_page_btn1' style='visibility: visible' ><a href="#" onclick="process_save(1);" style="text-decoration:none"> <img src="/screens/saveallpage_chx.gif" alt="全部保存" class="button" width="120" height="20" border="0" /></a> </span> <span name='mylist_btn1' id='mylist_btn1' style='visibility: visible' ><a href="#" onclick="save_to_mylist();"> <img src="/screens/save_to_my_lists_chx.gif" alt="保存到我的检索列表" border="0"/></a> </span> </td></tr> </td> </tr> <tr class="browseHeader"> <td align="center" class="browseHeaderData"> 关键词 (1-12 共 2609) </td> </tr> <!-- Right Result rank 1 --> <tr class="browseSuperEntry browseEntryRelGroup1"><td colspan="1"><img src="/screens/relevance5.gif" alt="最相关">&nbsp;最相关题名&nbsp;1-85 条记录</td></tr> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_1'></a> 1</div> <div class="briefcitMedia"> <img src="/screens/media_book.gif" alt="普通图书"></div> <input type="checkbox" name="save" value="b3418326" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&1%2C1%2C">微信品牌营销</a></span> <br/> &nbsp; &nbsp; 北京 : 机械工业出版社, 2016.01&nbsp; &nbsp; 10,188页 ; 25cm<!-- <div> 2016</div> --> <br/> <span>评级:</span> <span id="rategroup1"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_1"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> &nbsp;</div> --> <div class="briefcitItems"> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/bibimage&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&1%2C1%2C" target="_parent"><img src="http://book.bookday.cn/book/cover?isbn=9787111520054&w=67&h=97 " border="0" alt="书封"></a></td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_2'></a> 2</div> <div class="briefcitMedia"> <img src="/screens/media_book.gif" alt="普通图书"></div> <input type="checkbox" name="save" value="b3422848" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&2%2C2%2C">微信公众号营销一本通</a></span> <br/> / 魏艳,朱虹主编&nbsp; &nbsp; : 化学工业出版社, 2016.01&nbsp; &nbsp; 181页 ; 24cm : 图<!-- <div> 2016</div> --> <br/> <span>评级:</span> <span id="rategroup2"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_2"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> &nbsp;</div> --> <div class="briefcitItems"> </div> <div class="briefcitItems"> 本书详细介绍了微信公众号营销的各种理念和技巧,以微信公众号为切入点,精选多个微信公众号营销的成功实例构建全文。全书分为基础篇、运用篇和实践篇三篇,全面解析微信公众号的基础知识、运营思路、营销战术,以及推广方法和步骤。</div> </td> <td align="center" width="5%"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/bibimage&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&2%2C2%2C" target="_parent"><img src="http://book.bookday.cn/book/cover?isbn=9787122252050&w=67&h=97 " border="0" alt="书封"></a></td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_3'></a> 3</div> <div class="briefcitMedia"> <img src="/screens/media_book.gif" alt="普通图书"></div> <input type="checkbox" name="save" value="b3335811" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&3%2C3%2C">深度微信</a></span> <br/> / 韩曰田著&nbsp; &nbsp; 北京 : 机械工业出版社, 2015&nbsp; &nbsp; XI, 282页 : 图 ; 25cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup3"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_3"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/requestbrowse~b3335811&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&3%2C3%2C"><img src="/screens/bullet.gif" alt="" border="0" style="margin-right:5px"/>预约</a></div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> &nbsp;</div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/fivefloor.html">本部五楼社科阅览区</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF713.36%2F201520/cf713+36+201520/-3,-1,,E/browse">F713.36/201520</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/fourfloor.html">本部四楼中文图书外借区</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF713.36%2F201520/cf713+36+201520/-3,-1,,E/browse">F713.36/201520</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;到期 16-03-18 </td></tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;南校区三楼社科图书借阅区 </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF713.36%2F201520/cf713+36+201520/-3,-1,,E/browse">F713.36/201520</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;到期 16-04-13 </td></tr> </table> </div> <div class="briefcitItems"> 本书包括微信营销、运营、创业和微信电商4大主题,涵盖公众号和朋友圈两大领域。营销视角,公众号内容推广的5个技巧;公众号增粉的15种方法,粉丝维护的5个技巧,获取粉丝的8个“后悔”;朋友圈分享的9个技巧,朋友圈营销的6大策略;微信营销的6大禁忌。运营视角,企业社交媒体矩阵构建;公众号2大定位方法、6大定位方向、11条取名技巧或学问;公众号内容组织、编辑、推送策略与技巧;朋友圈定位的2大策略和营销的6个技巧;运营团队的人才策略和团队管理;运营数据的分析方法。创业角度,自媒体、自组织、第三方开发、微信营销、旅游、本地服务、移动电商等7大领域的创业思路、方法和案例;订阅号创业的4大风险。电商角度,订阅号的电商策略和价值、微信小店的布局和全流程操作、微信电商引流的8个妙招、朋友圈的销售属性和卖货策略。</div> </td> <td align="center" width="5%"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/bibimage&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&3%2C3%2C" target="_parent"><img src="http://book.bookday.cn/book/cover?isbn=9787111484516&w=67&h=97 " border="0" alt="书封"></a></td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_4'></a> 4</div> <div class="briefcitMedia"> <img src="/screens/media_book.gif" alt="普通图书"></div> <input type="checkbox" name="save" value="b3356842" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&4%2C4%2C">微信蓝皮书</a></span> <br/> / 主编方兴东&nbsp; &nbsp; 北京 : 电子工业出版社, 2015-&nbsp; &nbsp; 册 : 图 ; 24cm<!-- <div> 2015-</div> --> <br/> <span>评级:</span> <span id="rategroup4"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_4"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> &nbsp;</div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼自科阅览区</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cTP393.409%2F20153/ctp393+409+20153/-3,-1,,E/browse">TP393.409/20153</a> <!-- field v -->&nbsp;2014 <!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> 本书全面介绍了微信的发展现状, 深度剖析了微信在互联网金融、移动电子商务、电子政务、自媒体和新媒体营销等领域的实践应用与变革创新, 预测并展望了微信在未来的发展趋势与变革热点, 客观评价了微信作为社交全球化平台中的中国力量代表所蕴藏的战略价值、经济价值和社会价值。本书是国内第一本聚焦微信的精品研究图书, 中国最早的互联网智库--互联网实验室、全球领先的移动互联网研究机构--艾媒咨询强强联合, 国内知名的微信与移动互联网研究者、观察者、实践者鼎力参与。本书研究深入、内容全面、分析独到、可读性强, 极具前瞻性和参考性。</div> </td> <td align="center" width="5%"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/bibimage&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&4%2C4%2C" target="_parent"><img src="http://book.bookday.cn/book/cover?isbn=9787121251757&w=67&h=97 " border="0" alt="书封"></a></td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_5'></a> 5</div> <div class="briefcitMedia"> <img src="/screens/media_book.gif" alt="普通图书"></div> <input type="checkbox" name="save" value="b3342924" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&5%2C5%2C">微信营销2.0</a></span> <br/> / 何思南著&nbsp; &nbsp; 北京 : 机械工业出版社, 2015&nbsp; &nbsp; X, 170页 : 图 ; 22cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup5"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_5"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/requestbrowse~b3342924&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&5%2C5%2C"><img src="/screens/bullet.gif" alt="" border="0" style="margin-right:5px"/>预约</a></div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> &nbsp;</div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/fivefloor.html">本部五楼社科阅览区</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF713.36%2F201539/cf713+36+201539/-3,-1,,E/browse">F713.36/201539</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/fourfloor.html">本部四楼中文图书外借区</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF713.36%2F201539/cf713+36+201539/-3,-1,,E/browse">F713.36/201539</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;到期 16-03-18 </td></tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;南校区三楼社科图书借阅区 </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF713.36%2F201539/cf713+36+201539/-3,-1,,E/browse">F713.36/201539</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;传递中 </td></tr> </table> </div> <div class="briefcitItems"> 本书内容包括:微信营销进入2.0时代;微信公众平台的创建、运营与营销;微信营销三大步骤;微信营销九大实战技巧;微信营销五大常见错误;微信营销的效果评估;微信营销三大典型案例。</div> </td> <td align="center" width="5%"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CC/bibimage&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&5%2C5%2C" target="_parent"><img src="http://book.bookday.cn/book/cover?isbn=9787111487562&w=67&h=97 " border="0" alt="书封"></a></td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_6'></a> 6</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3391400" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&6%2C6%2C">基于微信的企业营销模式创新研究</a></span> <br/> / 侯兴云著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 38页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup6"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_6"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=F/M2015/171" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=F/M2015/171'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF%2FM2015%2F171/cf+m2015+171/-3,-1,,E/browse">F/M2015/171</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_7'></a> 7</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3392774" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&7%2C7%2C">“罗辑思维”微信公众号运营策略及其效果研究</a></span> <br/> / 黄晓丹著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 53页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup7"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_7"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/57" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/57'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cG%2FM2015%2F57/cg+m2015+57/-3,-1,,E/browse">G/M2015/57</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_8'></a> 8</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3393110" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&8%2C8%2C">基于微信熟人关系圈的自我呈现探析</a></span> <br/> / 张珍珠著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 47页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup8"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_8"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/86" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/86'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cG%2FM2015%2F86/cg+m2015+86/-3,-1,,E/browse">G/M2015/86</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_9'></a> 9</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3391591" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&9%2C9%2C">微信公众平台用户参与、用户价值与用户忠诚度的关系研究</a></span> <br/> / 杨永丽著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 57页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup9"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_9"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=F/M2015/579" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=F/M2015/579'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cF%2FM2015%2F579/cf+m2015+579/-3,-1,,E/browse">F/M2015/579</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_10'></a> 10</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3392748" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&10%2C10%2C">媒介生态学视角下柬泰华文报刊微信发展研究</a></span> <br/> / 黄慧玲著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 76页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup10"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_10"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/205" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/205'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cG%2FM2015%2F205/cg+m2015+205/-3,-1,,E/browse">G/M2015/205</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_11'></a> 11</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3391625" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&11%2C11%2C">柬埔寨《华商日报》微信运营策略研究</a></span> <br/> / 陈毅著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 50页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup11"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_11"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/219" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=G/M2015/219'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cG%2FM2015%2F219/cg+m2015+219/-3,-1,,E/browse">G/M2015/219</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 01 July 2008 --> <tr> <td class="briefCitRow"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="5%" align="center" class="briefcitEntry" > <div class="briefcitEntryNum"> <a name='anchor_12'></a> 12</div> <div class="briefcitMedia"> 硕士学位论文</div> <input type="checkbox" name="save" value="b3392933" > </td> <td align="left" class="briefcitDetail"> <!--{nohitmsg}--> <span class="briefcitTitle"> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/frameset&FF=X{u5FAE}{u4FE1}&searchscope=1&SORT=D&12%2C12%2C">基于使用与满足理论的政务微信运营效果评价研究</a></span> <br/> / 吴翀著&nbsp; &nbsp; 广州 : 暨南大学, 2015&nbsp; &nbsp; 75页 : 图 ; 29cm<!-- <div> 2015</div> --> <br/> <span>评级:</span> <span id="rategroup12"><a href="/patroninfo~S1*chx/0/redirect=/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse#anchor_12"><img src="/screens/rate_no.gif" border="0" width="75" height="14" alt="No one has rated this material" title="No one has rated this material" /></a> </span><div class="briefcitRequest"> </div> <span class="briefcitStatus"> </span> <!-- <div class="briefcitActions"> <a href="http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=D/M2015/193" onclick="window.open('http://lib.jnu.edu.cn/webservice/TPIAction.action?callno=D/M2015/193'); return false;"><img src="/screens/bullet_chx.gif" alt="" border="0" style="margin-right:5px"/>电子资源</a><br /> </div> --> <div class="briefcitItems"> <table width="100%" border="0" cellspacing="1" cellpadding="2" class="bibItems"> <tr class="bibItemsHeader"> <th width="33%" class="bibItemsHeader"> 馆藏地 </th> <th width="43%" class="bibItemsHeader"> 索书号 </th> <th width="24%" class="bibItemsHeader"> 处理状态 </th> </tr> <tr class="bibItemsEntry"> <td width="33%" ><!-- field 1 -->&nbsp;<a href="http://202.116.13.43/douban/floor/sixfloor.html">本部六楼本校博硕学位论文</a> </td> <td width="43%" ><!-- field C -->&nbsp;<a href="/search~S1*chx?/cD%2FM2015%2F193/cd+m2015+193/-3,-1,,E/browse">D/M2015/193</a> <!-- field v --><!-- field # -->&nbsp;</td> <td width="24%" ><!-- field % -->&nbsp;馆内阅览 </td></tr> </table> </div> <div class="briefcitItems"> </div> </td> <td align="center" width="5%"> &nbsp;</td> </tr> </table> </td> </tr> <!--this is customized <screens/briefcit_chx.html>--> <tr align="CENTER" valign="MIDDLE"> <td colspan="5" class="browseSaveJump"> <a href="#" onclick="process_save(0);" style="text-decoration:none"> <img src="/screens/savemarked_chx.gif" alt="保存选择" class="button" width="120" height="20" border="0" /></a> <span name='save_page_btn2' id='save_page_btn2' style='visibility: visible' ><a href="#" onclick="process_save(1);" style="text-decoration:none"> <img src="/screens/saveallpage_chx.gif" alt="全部保存" class="button" width="120" height="20" border="0" /></a> </span> </form> <form action="/search~S1*chx/X?{u5FAE}{u4FE1}&searchscope=1&SORT=D" method="POST"> <input type="HIDDEN" name="jumpref" value="X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/1%2C2609%2C2609%2CB/browse"> <script type="text/JavaScript"> function iiiDoSubmit_1() { //getFormHandleForm() is in common.js var obj = getFormHandleForm(1); obj.submit(); } </script> <input type="hidden" id="iiiFormHandle_1"/> <a href="#" onclick="iiiDoSubmit_1();"><img src="/screens/locateinresults_chx.gif" alt="Locate in results" class="button" width="120" height="20" border="0" /></a> <script type="text/JavaScript"> //getFormHandleForm() is in common.js var evtobj = getFormHandleForm(1); if (document.layers) { document.captureEvents(Event.KEYUP); } document.onkeyup = function(evt) { if (!evt) evt = window.event; var keyCode; if (evt.which) keyCode = evt.which; else if (evt.keyCode) keyCode = evt.keyCode; var targ; if (evt.target) targ = evt.target; else if (evt.srcElement) targ = evt.srcElement; if (targ.nodeType == 3) //for Safari bug targ = targ.parentNode; if (targ.form) { targ = targ.form; //alert('targ='+targ+' evtobj='+evtobj); if (keyCode == 13 && targ == evtobj) { iiiDoSubmit_1(); } } }; </script> <input type="TEXT" name="jumpto" value="2609" size="4" maxlength="4"> </form> </td></tr> </td> </tr> </table> <!-- END BROWSELIST/BRIEFCIT AREA --> </td> <!-- END BROWSE SCREEN LEFT CELL --> </tr> <!-- BEGIN BOTTOM BROWSE PAGER --> <!-- begin page widgit --> <tr class="browsePager"><td align="center" class="browsePager" colspan="5"> 结果页面&nbsp;&nbsp;&nbsp;<strong>1</strong> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/13%2C2609%2C2609%2CB/browse">2</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/25%2C2609%2C2609%2CB/browse">3</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/37%2C2609%2C2609%2CB/browse">4</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/49%2C2609%2C2609%2CB/browse">5</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/61%2C2609%2C2609%2CB/browse">6</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/73%2C2609%2C2609%2CB/browse">7</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/85%2C2609%2C2609%2CB/browse">8</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/97%2C2609%2C2609%2CB/browse">9</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/109%2C2609%2C2609%2CB/browse">10</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/121%2C2609%2C2609%2CB/browse">11</a> ... <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/2605%2C2609%2C2609%2CB/browse">218</a> <a href="/search~S1*chx?/X{u5FAE}{u4FE1}&searchscope=1&SORT=D/X{u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1/13%2C2609%2C2609%2CB/browse">下一页</a> <!-- end page widgit --> </td> </tr> <!-- END BOTTOM BROWSE PAGER --> </table> <!-- END BROWSE SCREEN TABLE --> <div align="center" class="navigationRow"> <form> <a href="/search~S1*chx"><img src="/screens/startover_chx.gif" alt="重新检索" border="0" /></a> <a href="/search~S1*chx/X?NOSRCH={u5FAE}{u4FE1}&searchscope=1&SORT=D&SUBKEY=%E5%BE%AE%E4%BF%A1"><img src="/screens/modify_chx.gif" alt="修改检索" border="0" /></a> <a href="/search~S1*chx/X"><img src="/screens/another_chx.gif" alt="再次检索" border="0" /></a> <select name=HISTORY onChange="onSelectChange(this, '~S1*chx')"><option value="">(检索历史)</option> <OPTION VALUE="X{u5FAE}{u4FE1}&searchscope=1&SORT=D">关键字: 微信 在 全部馆藏 <option value="+/search~S1*chx/X?{u5FAE}{u4FE1}&searchscope=1&SORT=D&clear_history">(清除检索历史)</option> <option value="+/*chx">(结束检索进程)</option> </select> </form> </div> <!-- begin botlogo.html file --> <!-- Rel 2007 "Skyline" Example Set --> <!-- This File Last Changed: 27 June 2008 --> </div><!-- end content container --> </div> <!-- end clearing div --> <div style="clear:both"></div> <!-- end botlogo.html file --> </body> </html> ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
五年程序员记流水账式的自白。
不知觉已中码龄已突破五年,一路走来从起初铁憨憨到现在的十九线程序员,一路成长,虽然不能成为高工,但是也能挡下一面,从15年很火的android开始入坑,走过java、.Net、QT,目前仍处于android和.net交替开发中。 毕业到现在一共就职过两家公司,目前是第二家,公司算是半个创业公司,所以基本上都会身兼多职。比如不光要写代码,还要写软著、软著评测、线上线下客户对接需求收集...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
一文详尽系列之模型评估指标
点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容在机器学习领域通常会根据实际的业务场景拟定相应的不同的业务指标,针对不同机器学习问题如回归、分类、排...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
还记得那个提速8倍的IDEA插件吗?VS Code版本也发布啦!!
去年,阿里云发布了本地 IDE 插件 Cloud Toolkit,仅 IntelliJ IDEA 一个平台,就有 15 万以上的开发者进行了下载,体验了一键部署带来的开发便利。时隔一年的今天,阿里云正式发布了 Visual Studio Code 版本,全面覆盖前端开发者,帮助前端实现一键打包部署,让开发提速 8 倍。 VSCode 版本的插件,目前能做到什么? 安装插件之后,开发者可以立即体验...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
2019年除夕夜的有感而发
天气:小雨(加小雪) 温度:3摄氏度 空气:严重污染(399) 风向:北风 风力:微风 现在是除夕夜晚上十点钟,再有两个小时就要新的一年了; 首先要说的是我没患病,至少现在是没有患病;但是心情确像患了病一样沉重; 现在这个时刻应该大部分家庭都在看春晚吧,或许一家人团团圆圆的坐在一起,或许因为某些特殊原因而不能团圆;但不管是身在何处,身处什么境地,我都想对每一个人说一句:新年快乐! 不知道csdn这...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了掌握好Android打下基础。
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
【CSDN学院出品】 你不可不知的JS面试题(分期更新……)
1、JS中有哪些内置类型? 7种。分别是boolean、number、string、object、undefined、null、symbol。 2、NaN是独立的一种类型吗? 不是。NaN是number类型。 3、如何判断是哪个类型? Object.prototype.toString.call(),返回为[object Type]。 现在我们来验证一下。 Object.prototype.toS...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c# 时间比天数 c# oracle查询 c# 主动推送 事件 c# java 属性 c# 控制台 窗体 c# 静态类存值 c#矢量作图 c#窗体调用外部程式 c# enum是否合法 c# 如何卸载引用
立即提问