实际上,我有一个在活动中启动的服务,并在它被销毁后继续工作。在活动销毁期间,服务将重新启动。如果我理解正确的话,为了Service
立即在UI线程外运行,有必要在清单中声明android:process="my.own.ProcessName"
,但这行不通。我究竟做错了什么?或者也许使用IntentService
因为 它立即在一个新线程中启动?
helloWorld's questions
我在 Google Play 上有一个与用户一起使用的应用程序。我向这个应用程序添加了一些功能,我想测试它。如果我将新的 APK 文件上传到测试版部分,会发生什么情况?用户不会注意到任何事情(这不会以任何方式影响当前版本),但我会得到一个单独的测试版链接,还是每个人都会更新到新的“测试版”?
AlarmManager 没有在指定时间触发,而是在指定时间后约 5 分钟触发……为什么?如果我在一段时间后激活它,它也会起作用。也就是说,如果设置为10:00,而我在11:00激活它,那么理论上它应该在明天10:00工作,但它每分钟都在工作。它将在明天 ~10:05 工作
void setMorningAlarm(Context context){
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, morningId, intent, 0);
Calendar time = Calendar.getInstance();
time.set(Calendar.HOUR_OF_DAY, 8);
time.set(Calendar.MINUTE, 0);
alarmManager.setInexactRepeating(
AlarmManager.RTC_WAKEUP,
time.getTimeInMillis(),
AlarmManager.INTERVAL_DAY,
pi);
Toast.makeText(context,"Morning Notify", Toast.LENGTH_SHORT).show();
}
在初始化列表的时候,我自动将我需要的列表元素设置为选中,但有时会选错。那是放盐的地方...
当我在列表中时:'orange' , 'banana', 'apple', 'strawberry)' 一切正常。我问:
$('.edit_selectCategory option:contains("' + "апельсин" +'")').prop('selected', true);
我得到了所有嗡嗡作响的“橙色”。但是一旦列表中出现几个相似的单词,就会选择最后一个。也就是说,如果'orange orange'仍然出现在列表中,那么我将得到'orange orange'而不是'orange'。
<select class="edit_selectCategory" style="width: 100%"></select>
有必要根据时间表启动应用程序(服务)。没有代码示例是可能的,尽管如果有教程也不错。主要原则是使用什么和连接什么。我已经谷歌了。我只是不知道去哪里挖。日历有什么用?服务?有什么服务吗?无论应用程序是否关闭,手机是否启动,应用程序都应该启动。这不是一项活动,而是一项与服务器(位置跟踪器)通信的服务。没有什么违法的,一切都与用户达成一致。
实际上,我收到了一封来自 Google 的信件,说明我的应用程序使用了权限,并要求提供指向该应用程序(或)我不会将数据用于非法目的的信息的链接。
结果,问题出现了:
- 是否有此类消息的示例?或者它可以是自由形式的吗?
- 在哪里粘贴链接?在应用程序描述中的商店中还是在应用程序本身中?
- 我没有网站。我在哪里可以发布此消息以便稍后有链接?推荐一个服务。一般来说,谷歌人自己应该提供更简单的东西。
- 我是否需要在某处注明我提供了链接或机器人是否会工作?
实际上,通过标准的“应用程序管理器”,我部署了我的应用程序helloworld.war
并通过 获取了该站点的路径serverip/helloworld/
,但我希望serverip/
在此地址看到 Tomcat 欢迎窗口。
而第二个问题。在'inedx.jsp'中,你必须将字符串更改<form action="../LoginServlet" method="post">'
为<form action="../helloworld/LoginServlet" method="post">
,如果有很多类,这不是很方便。
需要将图像保存到服务器。可以吃朴实无华的图书馆吗?当我停在 oracle 教程上时。但问题是文件保存在服务器的什么位置,如何创建路径呢?
该示例使用String path = request.getParameter("MyPath");
但我未在此处指定返回的null
内容还有另一个选项path = request.getServletContext().getRealPath("");
返回项目的父目录。是否可以在服务器上使用此选项?
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
private final static Logger LOGGER =
Logger.getLogger(FileUploadServlet.class.getCanonicalName());
private static final long serialVersionUID = 7908187011456392847L;
/**
* Processes requests for both HTTP
* <code>GET</code> and
* <code>POST</code> methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
// Create path components to save the file
final String path = request.getParameter("destination");
final Part filePart = request.getPart("file");
final String fileName = getFileName(filePart);
OutputStream out = null;
InputStream filecontent = null;
final PrintWriter writer = response.getWriter();
try {
out = new FileOutputStream(new File(path + File.separator
+ fileName));
filecontent = filePart.getInputStream();
int read;
final byte[] bytes = new byte[1024];
while ((read = filecontent.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
writer.println("New file " + fileName + " created at " + path);
LOGGER.log(Level.INFO, "File {0} being uploaded to {1}",
new Object[]{fileName, path});
} catch (FileNotFoundException fne) {
writer.println("You either did not specify a file to upload or are "
+ "trying to upload a file to a protected or nonexistent "
+ "location.");
writer.println("<br/> ERROR: " + fne.getMessage());
LOGGER.log(Level.SEVERE, "Problems during file upload. Error: {0}",
new Object[]{fne.getMessage()});
} finally {
if (out != null) {
out.close();
}
if (filecontent != null) {
filecontent.close();
}
if (writer != null) {
writer.close();
}
}
}
private String getFileName(final Part part) {
final String partHeader = part.getHeader("content-disposition");
LOGGER.log(Level.INFO, "Part Header = {0}", partHeader);
for (String content : part.getHeader("content-disposition").split(";")) {
if (content.trim().startsWith("filename")) {
return content.substring(
content.indexOf('=') + 1).trim().replace("\"", "");
}
}
return null;
}
/**
* Handles the HTTP
* <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Servlet that uploads files to a user-defined destination";
}
}
如何获取最后添加的元素的id?发现了以下设计,SELECT LAST_INSERT_ID()
但它的安全性如何?
如果我先做INSERT INTO table
然后执行SELECT LAST_INSERT_ID()
,是否有可能同时“某人”添加了另一条记录并且错误的记录会返回给我id
?或者也许你可以(应该)将它组合成一种类型的请求INSERT INTO section (section_name) VALUES('bob') SELECT LAST_INSERT_ID()
- 只是这不是语法上正确的操作......
引用临时变量的正确方法是什么?
作品:
$('.selectCategory option:contains("Хлеб")').prop('selected',true);
不起作用(
var temp = ("Хлеб");
$('.selectCategory option:contains(temp)').prop('selected',true);
我有一个自动生成按钮的弹出窗体。关闭表单时,其中的所有字段都将被清除。
function closeDialog() {
componets_array_ID =[];
varButton = [];
$.ajaxSetup({ cache: false });
$(".getInputComponent").val('');
$(".prodName").val('');
$(".prodProvider").val('');
$(".prodCode").val('');
$(".selectCategory").find('option').remove();
if($(".dialog_create_product").dialog("isOpen")){
$(".dialog_create_product").dialog("destroy")
};
}
第二次打开窗口后,生成的按钮在单击时会处理两次。如果窗口关闭并第三次打开,则按钮将被处理三次……以此类推。
如果需要,这是整个画布:
open: function (event, ui) {
//формируем select
$.ajax({ url: "/ButtonServlet",
data: {
getCategory : "getCategory",
},
type: 'POST',
dataType:'json',
success: function(data) {
$.each(data, function (index, element) {
$('.selectCategory').append($("<option></option>")
.attr("value",element[0])
.text(element[1]));
})
fillCompound($(".selectCategory").val())
},
error: function(request, status, error){
alert("Error: Could not back");
}
});
//определяем выбранный select и заполняем кнопки
$(".selectCategory").change(function (){
var selId;
$( "select option:selected" ).each(function() {
selId = $( this ).val()
});
fillCompound(selId)
});
//ВЫЗЫВАЕТСЯ ПОВТОРНО!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//обработка кнопок
$(".compound").on("click", ".btnCompound", function () {
$(".components").append($(this));
componets_array_ID.push($(this).attr("id"));
});
//ВЫЗЫВАЕТСЯ ПОВТОРНО!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$(".components").on("click", ".btnCompound", function () {
$(".compound").append($(this));
comp_index = componets_array_ID.indexOf($(this).attr("id"));
if (comp_index > -1) {
componets_array_ID.splice(comp_index, 1);
}
alert("вызов2")
});
$(".components").on("click", ".varButton", function () {
$(this).remove();
varBtn_index = varButton.indexOf($(this).text());
if (comp_index > -1) {
varButton.splice(varBtn_index, 1);
}
});
$(".divInput").on("click", ".addComponent", function () {
if ($(".getInputComponent").val() != ""){
$(".components").append("<button class=\"varButton\">"+$(".getInputComponent").val()+"</button>");
varButton.push($(".getInputComponent").val());
$(".getInputComponent").val('');
}
})
},
我有一张桌子,桌子a
上有varhar
一个数组。例如 (1,2,3,4,5,6)。当我删除表中的第 5 个和第 6 个元素(最后一个)时,当新元素添加到表中时,创建的新元素不是 7,8,9 ...而是 5,6,7,8 ...事实证明,表5 和 6 不再位于同一行。当然你也可以清理数组,但是有没有可能让增量唯一呢?id
b
b
b
id
а
а
上部署了web
一个项目。当我在 maven 中添加一个库时,项目停止构建...我尝试了不同的结果,相同的...我也添加了...有什么问题,告诉我?实际上,我如何创建一个 JSON 对象?Intellij
Томкат 7
json
lib
jerset-json
14-Sep-2016 23:18:55.629 SEVERE [RMI TCP Connection(42)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke Exception invoking method createStandardContext
javax.management.RuntimeOperationsException: Exception invoking method manageApp
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:308)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$2.run(Transport.java:202)
at sun.rmi.transport.Transport$2.run(Transport.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:198)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:567)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:728)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1702)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
... 34 more
我可以访问过滤器中的 index.jsp。索引已加载,但索引中指向 css 和 js 文件的链接未通过。没有过滤器一切正常。这是为什么?我是否需要以某种方式使用 js 和 css 打开对文件夹的访问权限?
筛选
if (path.equals("/") || path.equals("/index.jsp")){
RequestDispatcher dispatcher = servletRequest.getRequestDispatcher("/jsp/index.jsp");
servletRequest.setAttribute("message", "Добро пожаловать");
dispatcher.forward(servletRequest, servletResponse);
return;
}
指数
<script type="text/javascript" src="/tabulator/tabulator.js"></script>
我有一个 servlet 索引,分为两个菜单部分和不同的内容(servlet)。如何将菜单和杂项内容放入索引中?并实现他们的互动?