2013年9月13日星期五

Using Servlet response.getWriter () to write the pages referenced in the JS file considerably big problem

Since the project 's needs , you need to add a separate interface function for data export .
take the jar package upgrade , so you can not write a separate JSP page , servlet can only be used to write .
current page can not be referenced js file path , the solution ! ! ~


easy to play Jar package , I moved to the class Js file package, I do not know okay ?

current directory structure

/ lrs_v2/src/com/lbs/lrs/ls/apps/dataexport
exist under the package documents ( see figure )


Code:
/**
 * 数据导出页面跳转
 */
@Override
protected void doGet(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {

response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>数据导出</TITLE>");

out.println("<script language=\"javascript\" type=\"text/javascript\" src=\"jquery.js\"></script>");
out.println("<script language=\"javascript\" type=\"text/javascript\" src=\"jquery.validate.js\"></script>");
out.println("<script language=\"javascript\" type=\"text/javascript\" src=\"WdatePicker.js\"></script>");

out.println("</HEAD>");
out.println("<style type=\"text/css\">input {vertical-align:middle;}</style>");
out.println("<body>");
out.println("<form action=\"/dataexportsubmit\" method=\"post\" id=\"form\">");
out.println("<table width=\"800\" align=\"center\" border=\"0\">");
out.println("<caption align=\"left\">数据导出</caption>");
out.println("<tr><td>行政区划代码:</td><td><input id=\"aab301\" name=\"aab301\" class=\"required isZipCode\" maxlength=\"6\" width=\"20\" /></td></tr>");
out.println("<tr><td>数据期别:</td><td><input id=\"aae043\" name=\"aae043\" type=\"text\" class=\"required Wdate\" readonly=\"true\" onfocus=\"WdatePicker({skin:'whyGreen',dateFmt:'yyyyMM'})\" width=\"20\"/></td></tr>");
out.println("<tr><td>文件导出路径:</td><td><input id=\"dir\" name=\"dir\" type=\"text\" class=\"required\" readonly=\"true\" width=\"50\" /><button type=\"button\" onClick=\"selectPath()\">路径选择</button></td></tr>");
out.println("<tr></tr>");
out.println("<tr><td><input name=\"systype_lras\" value=\"1\" style=\"display:none;\" /></td><td><input type=\"submit\" value=\"导出数据\" /></td></tr>");
out.println("</table></form>");
out.println("</body>");
out.println("</HTML>");
out.println("<script type=\"text/javascript\">");
out.println("function selectPath() {");
out.println("try {");
out.println("var Message = \"请选择文件夹\"; var Shell = new ActiveXObject(\"Shell.Application\");var Folder = Shell.BrowseForFolder(0, Message, 0x0040, 0x11);");
out.println("if (Folder != null) {");
out.println("Folder = Folder.items(); Folder = Folder.item();Folder = Folder.Path;");
out.println("if (Folder.charAt(Folder.length - 1) != \"\\\\\") {Folder = Folder + \"\\\\\";}");
out.println("document.all.dir.value = Folder;return Folder;");
out.println("}} catch (e) {");
out.println("alert(e.message);}}");
out.println("jQuery.validator.addMethod(\"isZipCode\", function(value, element) {var tel = /^[0-9]{6}$/;return this.optional(element) || (tel.test(value));}, \"请正确填写您的行政区划代码\");");
out.println("function ajaxSubmit(frm, fn) {var dataPara = getFormJson(frm);$.ajax({url: frm.action,type: frm.method,data: dataPara,success: fn});}");
out.println("function getFormJson(frm) {var o = {};var a = $(frm).serializeArray();$.each(a, function () {if (o[this.name] !== undefined) {if (!o[this.name].push) {o[this.name] = [o[this.name]];}o[this.name].push(this.value || \"\");} else {o[this.name] = this.value || \"\";}});return o;}");
out.println("$(document).ready(function(){$(\"#form\").bind(\"submit\", function(){ajaxSubmit(this, function(data){alert(data);});return false;});});");
out.println("</script>");
}

@Override
protected void doPost(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
doGet(request, response);
}




------ Solution ------------------------------------ --------
really have ah ,

I have time to try the evening

http://blog.csdn.net/jiangdragon/article/details/7827593
------ Solution ---------------------------------------- ----
I think it should be the deployment name + "/" + js take uri path because it is used request.getRequestURI ();

------ For reference only ---------------------------------- -----
unheard , jar package is put class file , you put into it is impossible to read js ah, it is also in the WEB-INF/lib below . .
------ For reference only -------------------------------------- -


original Js file / lrs_v2/WebContent/res in


If Jsp document quoted words , Jsp res files and folders at the same level so directly . / res / XXX on it
now changed with sevlet write pages , neighborhoods referenced address how to write ?
------ For reference only -------------------------------------- -


write according to this example , then