项目背景:SpringMvc+tomcat部署
期望改变:把项目静态化,并且把这部分静态化的html使用nginx
问题:我们知道,如果你在nginx的root目录放置html文件,可以直接使用http://xxx/productList/a.html
但是一般我们使用springMvc会这么构造url http://xxx/productList/a 而不会有.html
解决:
这里页面静态化就不多说了,主要讲nginx
public class HtmlGenerator { /** 根据模版及参数产生静态页面 */ public static boolean createUTF8HtmlPage(String url,String htmlFileName){ String statusCode=""; String returnResponse; //创建一个HttpClient实例充当模拟浏览器 HttpClient httpClient = HttpClientBuilder.create().build(); //创建GET方法的实例 HttpGet get = new HttpGet(url); //设置Get方法提交参数时使用的字符集,以支持中文参数的正常传递 get.addHeader("Content-type", "text/html;charset=UTF-8"); RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(12000).setConnectTimeout(12000).build();//设置请求和传输超时时间 get.setConfig(requestConfig); HttpResponse response; try{ response = httpClient.execute(get); HttpEntity entity = response.getEntity(); returnResponse = EntityUtils.toString(entity); statusCode = response.getStatusLine().getStatusCode()+""; if(!"200".equals(statusCode)){//非正常200 System.out.println("数据长度:" + returnResponse.length() + "返回状态码:" + response.getStatusLine()); }else{ //将解析结果写入指定的静态HTML文件中,实现静态HTML生成 FileHelper.fastWriteFileUTF8(htmlFileName,returnResponse); } EntityUtils.consume(entity); } catch (ClientProtocolException e) { statusCode="ClientProtocolException"; e.printStackTrace(); } catch (IOException e) { statusCode="IOException"; e.printStackTrace(); }catch (Exception e) { statusCode="Exception"; e.printStackTrace(); } finally { get.releaseConnection(); get.abort(); } return "200".equals(statusCode); }