小编Bhu*_*han的帖子

多线程在Web应用程序中的作用

我使用java(Servlets,JSP)2年来进行Web应用程序开发.在这两年中,我从未要求multithreading在任何项目中使用(显式 - 因为我知道servlet容器使用线程为不同的请求提供相同的servlet).

但每当我参加Web Developer职位(java)的访谈时,就会有几个与java中的线程相关的问题.我知道java线程的基础知识,所以回答问题不是问题.但有时我会因为不使用mutithreading在开发Web应用程序时遗漏某些东西而感到困惑?

所以我的问题是multithreadingWeb应用程序的作用是什么?multithreading可以在Web应用程序中使用的任何示例都将受到赞赏.

提前致谢.

java multithreading servlets web-applications

44
推荐指数
3
解决办法
2万
查看次数

获取客户端的IP地址

我正在使用JSP,Servlets(Container:Glassfish)开发一个Web应用程序,我需要在其中获取客户端IP Address.

我正在获取客户端的IP地址,因为我只想在有办公室的计算机上访问某些页面(如客户维护表单),我想限制访问办公室以外的那些页面.

以下是我的代码到目前为止:

WAY1

String ipAddress =  request.getRemoteAddr();
System.out.println("IP Address: "+ipAddress);
Run Code Online (Sandbox Code Playgroud)

way2

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)

让我知道这段代码有什么问题?

java ip servlets web-applications

43
推荐指数
3
解决办法
15万
查看次数

sessionStorage到期

我正在构建一个表单,我必须将数据存储在html5中,sessionStorage我不知道sessionStorage过期的地方.任何人都可以告诉我有关的到期时间sessionStorage

javascript html5 storage

41
推荐指数
3
解决办法
5万
查看次数

请求的资源上不存在Access-Control-Allow-Origin标头

我想访问来自相同域但具有不同端口号的信息,为了允许这一点,我添加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在执行时第一次出现.第二次它允许.

我的问题是有缺少servletjQuery代码?

任何建议将不胜感激.

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)

[注意:白名单和原点相同,但仍然会出错.它有时会起作用,并且有时会出现上述错误.]

如果您需要更多信息,请与我们联系.

javascript java ajax jquery cors

19
推荐指数
1
解决办法
11万
查看次数

使用multipart发送附加数据

我使用apache-commons-fileupload从获取文件clientserver.(使用JSPServlet).

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)

我能上传文件到服务器上,但我不能够得到的值text1servlet(我得到null的值text1servlet),我需要这样textfield的形式提交一些额外的信息,同时上传到server.

  • enctype="multipart/form-data"形式的选项不允许其他形式的数据所需提交?如果它不允许它,那么我必须将其他选项发送textfield给它server.
  • 或者我的代码中还有其他问题吗?

java jsp servlets file-upload apache-commons-fileupload

10
推荐指数
2
解决办法
6万
查看次数

将javascript数组传递给servlet

我已经在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)

如果代码有问题,请告诉我.

javascript java arrays jsp servlets

9
推荐指数
1
解决办法
3万
查看次数

如何使用xuggler同步音频和视频

我正在Screen Recorder with Audio使用xugglerjava 开发.我已经成功创建了视频文件和音频文件.现在我想同步这两个文件.我尝试过使用"ConcatenateAudioAndVideo.java",但是当我运行该文件时,它只生成44bytes文件.谁能告诉我这是什么问题?提前致谢.

java xuggler

6
推荐指数
1
解决办法
4879
查看次数

jqgrid如何显示服务器端消息

jqGrid用来以表格格式显示数据,使用JSPservlet.

编辑

我想在执行类似操作时显示来自服务器的错误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)

javascript java servlets response jqgrid

5
推荐指数
1
解决办法
1万
查看次数

tomcat中受密码保护的应用程序

我正在使用(JSP + Servlet)开发一个Web应用程序,我用它Tomcat 7.0.33作为web container.

所以我的要求是tomcat中的每个应用程序都会受到password保护,就像manager applicationtomcat受到保护一样.

到目前为止,我做了以下事情:

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?有什么方法可以避免这种情况吗?

提前致谢.

java deployment tomcat web.xml

5
推荐指数
1
解决办法
6177
查看次数

使servlet过滤器适用于所有Web应用程序

我正在使用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)

现在,我已经部署了该应用程序命名LoginTomcat 7。这servlet filter非常适合此Web应用程序中的资源(JSP,Servltes,.css,.js)。

所以现在Tomcat有喜欢的其他Web应用程序ProfilesDistribution等等。所以现在我想的是应用FilterLogin应用程序适用于部署在所有其他应用程序Tomcat。意味着对其他应用程序资源的每个请求都应经过Filter我开发的请求。

因此,任何建议将不胜感激!

编辑1

我不想把包含Filter在其他应用程序中的包放进去。由于在Tomcat服务器中部署了10多个应用程序,因此将要部署更多应用程序。因此,假设如果我将包含Filter所有其他应用程序的程序包放入其中并进行servlet映射,但是如果几天之后我想在Filter中进行一些更改,那么我将需要在所有应用程序中进行更改,然后需要重新部署它们。

java jsp tomcat servlets servlet-filters

5
推荐指数
1
解决办法
2086
查看次数