我使用java(Servlets,JSP)2年来进行Web应用程序开发.在这两年中,我从未要求multithreading
在任何项目中使用(显式 - 因为我知道servlet容器使用线程为不同的请求提供相同的servlet).
但每当我参加Web Developer职位(java)的访谈时,就会有几个与java中的线程相关的问题.我知道java线程的基础知识,所以回答问题不是问题.但有时我会因为不使用mutithreading在开发Web应用程序时遗漏某些东西而感到困惑?
所以我的问题是multithreading
Web应用程序的作用是什么?multithreading
可以在Web应用程序中使用的任何示例都将受到赞赏.
提前致谢.
我正在使用JSP,Servlets(Container:Glassfish)开发一个Web应用程序,我需要在其中获取客户端IP Address
.
我正在获取客户端的IP地址,因为我只想在有办公室的计算机上访问某些页面(如客户维护表单),我想限制访问办公室以外的那些页面.
以下是我的代码到目前为止:
String ipAddress = request.getRemoteAddr();
System.out.println("IP Address: "+ipAddress);
Run Code Online (Sandbox Code Playgroud)
String ipAddress=null;
String getWay = request.getHeader("VIA"); // Gateway
ipAddress = request.getHeader("X-FORWARDED-FOR"); // proxy
if(ipAddress==null)
{
ipAddress = request.getRemoteAddr();
}
System.out.println("IP Address: "+ipAddress);
Run Code Online (Sandbox Code Playgroud)
different IP Address
每次重新启动计算机时,上面的代码都会给我(关机 - >启动或重启).
我变得IP6
喜欢:
fe80:0:0:0:20ca:1776:f5ff:ff15%13
Run Code Online (Sandbox Code Playgroud)
让我知道这段代码有什么问题?
我正在构建一个表单,我必须将数据存储在html5中,sessionStorage
我不知道sessionStorage
过期的地方.任何人都可以告诉我有关的到期时间sessionStorage
我想访问来自相同域但具有不同端口号的信息,为了允许这一点,我添加Access-Control-Allow-Origin
了响应头.
Servlet代码:(发布在www.example.com:PORT_NUMBER)
String json = new Gson().toJson(list);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.setHeader("Access-Control-Allow-Origin", "*");//cross domain request/CORS
response.getWriter().write(json);
Run Code Online (Sandbox Code Playgroud)
jQuery代码:(发布于www.example.com)
$.post('http://www.example.com:PORT_NUMBER/MYSERVLET',{MyParam: 'value'}).done(function(data)
{
alert(data);
});
Run Code Online (Sandbox Code Playgroud)
有几次我收到这个错误(在控制台中):
XMLHttpRequest cannot load 'http://www.example.com:PORT_NUMBER/MYSERVLET'
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
此错误通常$.post
在执行时第一次出现.第二次它允许.
我的问题是有缺少servlet
或jQuery
代码?
任何建议将不胜感激.
UPDATE1
我改变了:
response.setHeader("Access-Control-Allow-Origin", "*");
Run Code Online (Sandbox Code Playgroud)
至:
response.setHeader("Access-Control-Allow-Origin", "http://www.example.com");
Run Code Online (Sandbox Code Playgroud)
然后我在控制台中收到此错误:
XMLHttpRequest cannot load http://www.example.com:PORT_NUMBER/MyServletName
The 'Access-Control-Allow-Origin' whitelists only 'http://www.example.com'
Origin 'http://www.example.com' is not in the list,
and is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
[注意:白名单和原点相同,但仍然会出错.它有时会起作用,并且有时会出现上述错误.]
如果您需要更多信息,请与我们联系.
我使用apache-commons-fileupload
从获取文件client
到server
.(使用JSP
和Servlet
).
JSP/HTML
<form method="POST" action="GetFile" enctype="multipart/form-data">
<input type="file" name="datafile">
<input type="text" name="text1">
<input type="submit" value="Next">
</form>
Run Code Online (Sandbox Code Playgroud)
Servlet:GetFile
System.out.println(request.getParameter("text1"));
Run Code Online (Sandbox Code Playgroud)
我能上传文件到服务器上,但我不能够得到的值text1
在servlet
(我得到null
的值text1
的servlet
),我需要这样textfield
的形式提交一些额外的信息,同时上传到server
.
enctype="multipart/form-data"
形式的选项不允许其他形式的数据所需提交?如果它不允许它,那么我必须将其他选项发送textfield
给它server
.我已经在SO上看过关于这个主题的先前问题,但我的问题还没有解决.
我将数组从javascript传递给servlet.
JavaScript代码:
var action = new Array();
function getProtAcionValues(rowNo,columnCount)
{
for(var j=0;j<columnCount;j++)
{
action[j] = document.getElementById('textActions'+rowNo+''+j).value;
alert(action[j]);
}
}
Run Code Online (Sandbox Code Playgroud)
Servlet代码:
String actions[] = request.getParameterValues("action[]");
if(actions!=null)
for(int i=0;i<actions.length;i++)
{
System.out.print(" Action: "+actions);
}
else
System.out.println("Action is null");
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我收到消息"Action is null".
如果我试试
String actions[] = request.getParameterNames("action[]");
Run Code Online (Sandbox Code Playgroud)
我收到语法错误:
The method getParameterNames() in the type ServletRequest is not applicable for the arguments (String)
Run Code Online (Sandbox Code Playgroud)
如果代码有问题,请告诉我.
我正在Screen Recorder with Audio
使用xuggler
java 开发.我已经成功创建了视频文件和音频文件.现在我想同步这两个文件.我尝试过使用"ConcatenateAudioAndVideo.java",但是当我运行该文件时,它只生成44bytes
文件.谁能告诉我这是什么问题?提前致谢.
我jqGrid
用来以表格格式显示数据,使用JSP
和servlet
.
编辑
我想在执行类似操作时显示来自服务器的错误insert, update, delete
.(datatype: "xml")
jqGrid的
jQuery("#list10_d").jqGrid({
height:250,
width:600,
url:'Assignment?action=Assign',
datatype: "xml",
colNames:['Sr. No.','PID', 'DATE', 'EMPID'],
colModel:[{name:'srNo',index:'srNo', width:30,sortable:false},
{name:'PID',index:'PID',width:0, sortable:true,editable:false},
{name:'DATE',index:'DATE', width:75,sortable:true,editable:true,editoptions: { dataInit: function(el) { setTimeout(function() { $(el).datepicker({dateFormat:"dd-M-yy",showButtonPanel: true,changeYear: true,changeMonth: true}).attr('readonly','readonly'); }, 200); }}},
{name:'EMPID',index:'EMPID', width:150,sortable:true,editable:true}
],
rowNum:10,
rowList:[10,20,50,100],
pager: '#pager10_d',
sortname: 'PID',
viewrecords: true,
sortorder: "asc",
},
multiselect: true,
editurl: "Assignment?action=Edit",
caption:"Assignment"
} ).navGrid('#pager10_d',{edit:false,add:true,del:false,addtext:'Assign '},
{},
{modal:true,jqModal: false,closeOnEscape:true,savekey: [true,13],closeOnEscape:true, recreateForm: true,width:500,mtype:'POST', url: 'Assignment',editData:{action: 'Assign',PID: function () {return PID;}}, …
Run Code Online (Sandbox Code Playgroud) 我正在使用(JSP + Servlet)开发一个Web应用程序,我用它Tomcat 7.0.33
作为web container
.
所以我的要求是tomcat中的每个应用程序都会受到password
保护,就像manager application
tomcat受到保护一样.
到目前为止,我做了以下事情:
server.xml中
<Realm className="org.apache.catalina.realm.MemoryRealm" />
Run Code Online (Sandbox Code Playgroud)
的tomcat-users.xml中
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="role1" />
<user username="tomcat" password="tomcat" roles="role1,tomcat,manager-gui"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
Run Code Online (Sandbox Code Playgroud)
web.xml中
<security-role>
<role-name>role1</role-name>
</security-role>
<security-role>
<role-name>tomcat</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>webappname</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>webappname</realm-name>
</login-config>
Run Code Online (Sandbox Code Playgroud)
当任何人通过应用程序路径打开应用程序时它工作正常(它要求输入用户名和密码,并且应用程序接受role1
或者tomcat
用于身份验证).
但问题是假设我以tomcat
具有所有角色的用户身份登录,并且当显示管理器屏幕列出服务器上部署的所有应用程序时,如果我尝试打开,mywebapplication
则再次询问用户名和密码.
我的问题是,如果我已将所有roles
用户分配给用户,tomcat
那么为什么在我登录时要求输入密码tomcat
?有什么方法可以避免这种情况吗?
提前致谢.
我正在使用JSP和Servlet开发Web应用程序。
我已经开发出一种servlet filter
用于Login
目的。它检查用户是否已登录,如果用户已登录,则它允许访问所请求的资源,否则它将请求重定向到Login page
。而且效果很好。
过滤
public class MyFilter implements Filter
{
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
{
//code here
}
}
Run Code Online (Sandbox Code Playgroud)
web.xml
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.myfilter.MyFilter</filter-class>
<init-param>
<param-name>PARAM_NAME_HERE</param-name>
<param-value>PARAM_VALUES_HERE</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
现在,我已经部署了该应用程序命名Login
上Tomcat 7
。这servlet filter
非常适合此Web应用程序中的资源(JSP,Servltes,.css,.js)。
所以现在Tomcat
有喜欢的其他Web应用程序Profiles
,Distribution
等等。所以现在我想的是应用Filter
在Login
应用程序适用于部署在所有其他应用程序Tomcat
。意味着对其他应用程序资源的每个请求都应经过Filter
我开发的请求。
因此,任何建议将不胜感激!
编辑1
我不想把包含Filter
在其他应用程序中的包放进去。由于在Tomcat服务器中部署了10多个应用程序,因此将要部署更多应用程序。因此,假设如果我将包含Filter
所有其他应用程序的程序包放入其中并进行servlet映射,但是如果几天之后我想在Filter中进行一些更改,那么我将需要在所有应用程序中进行更改,然后需要重新部署它们。