ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用ModelAndView和过滤器实现获取HTML请求的参数

2019-12-06 20:05:37  阅读:604  来源: 互联网

标签:String request modelAndView rootPath HTML import 过滤器 ModelAndView public


需求:获取HTML的请求参数

类似:

 

 

 

 

实现思路:

1、利用过滤器拦截所有HTML请求

2、利用ModelAndView把参数保存起来

3、在HTML页面使用${key}把参数获取到

 

 

 

一、利用过滤器拦截所有HTML请求

web.xml配置:

    <!-- html -->
    <filter>
        <filter-name>html</filter-name>
        <filter-class>core.filter.HTML</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>html</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>

过滤器:

package core.filter;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * 过滤所有HTML请求
 *
 */
public class HTML implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        req.setCharacterEncoding("UTF-8");
        res.setCharacterEncoding("UTF-8");
        res.setHeader( "Access-Control-Allow-Origin", "*" );
        String uri = backslashToSingle( req.getRequestURI() );
        String context = req.getContextPath();
        
        Enumeration enu = request.getParameterNames();
        StringBuffer params = new StringBuffer();
        while(enu.hasMoreElements()){
            String paraName = (String)enu.nextElement();
            params.append("&"+paraName+"="+request.getParameter(paraName));
        }
        
        //重定向
        if(uri.indexOf(".") != -1) {
            res.sendRedirect(context + "/html/go?pagepath=" + uri.substring(context.length()+1,uri.indexOf(".")) + params);
            return;
        }
        chain.doFilter(req, res);
    }
    
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }

    public void destroy() {
    }

    /**
     * 将路径中的连续斜杠转成单个的
     * @param strURL
     * @return
     */
    public static String backslashToSingle(String strURL){
        while ( strURL.indexOf( "//" ) != -1 ) {
            strURL = strURL.replace( "//", "/" );
        }
        if( strURL.indexOf( ":" ) != -1 ) {
            strURL = strURL.replace( ":", ":/" );
        }
        return strURL;
    }
}

HTML的controller类:

package module.api.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import core.common.springmvc.BasicController;

/**
 * 往html界面中注入常用el属性
 */
@Controller
@RequestMapping("/html")
public class HTMLController extends BasicController {

    @RequestMapping("/go")
    @ResponseBody
    public ModelAndView go(HttpServletRequest request, String pagepath, String parameter) {
        ModelAndView modelAndView = new ModelAndView();
        String rootPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
        String basePath = rootPath + request.getContextPath() + "/";
        rootPath += "/";
        String title = request.getParameter("name");
        modelAndView.setViewName(pagepath);
        modelAndView.addObject("rootPath", rootPath);
        modelAndView.addObject("basePath", basePath);
//        modelAndView.addObject("basePath", "http://183.203.223.224:82/taiyuan/");
        Object object = null;
        try {
            object = JSON.parse(parameter);
            if (!(object instanceof JSONObject)) {
                parameter = "{}";
            }
        } catch (Exception e) {
            parameter = "{}";
        }
        modelAndView.addObject("parameter", parameter);
        modelAndView.addObject("title", title == null ? "" : title);
        return modelAndView;
    }

    @RequestMapping("/readdata/go")
    @ResponseBody
    public ModelAndView readDataGo(HttpServletRequest request, String pagepath, String parameter, String interfacepath,
            String interfaceparameter) {
        ModelAndView modelAndView = new ModelAndView();
        String rootPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
        String basePath = rootPath + request.getContextPath() + "/";
        rootPath += "/";
        String title = request.getParameter("name");
        modelAndView.setViewName(pagepath);
        modelAndView.addObject("rootPath", rootPath);
        modelAndView.addObject("basePath", basePath); 
//        modelAndView.addObject("basePath", "http://183.203.223.224:82/taiyuan/");
        Object object = null;
        try {
            object = JSON.parse(parameter);
            if (!(object instanceof JSONObject)) {
                parameter = "{}";
            }
        } catch (Exception e) {
            parameter = "{}";
        }
        modelAndView.addObject("parameter", parameter);
        modelAndView.addObject("title", title == null ? "" : title);
        return modelAndView;
    }
}

父类BasicController:

package core.common.springmvc;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import util.ResponseUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


public abstract class BasicController {

    protected Map<String, Object> result = new HashMap<String, Object>();
    protected boolean flag = false;
    protected String msg = "";
    protected String businessCode="";


    public String basePath() {
        HttpServletRequest request = request();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
        return basePath;
    }

    public String rootPath() {
        HttpServletRequest request = request();
        String rootPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
        return rootPath;
    }

    public String cdnPath() {
        HttpServletRequest request = request();
        String cdnPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/cdn";
        return cdnPath;
    }

    
    public void write(Integer total,List list,HttpServletResponse response) throws Exception{
        JSONObject result = new JSONObject();
        JSONArray jsonArray = new JSONArray( list );
        result.put("rows", jsonArray);
        result.put("total", total);
        ResponseUtil.write(response, result);
    }

    @InitBinder   
    public void initBinder(WebDataBinder binder) {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");   
        dateFormat.setLenient(true);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }

    public String findSessionId() {
        HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
        String contextPath = request.getContextPath();
        return contextPath+request.getSession().getId();
    }

    public HttpServletRequest request() {
        HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();  
        return request;
    }
}

 

二、利用ModelAndView把参数保存起来

 

 

 

 

三、在HTML页面使用${key}把参数获取到

    var basePath = '${basePath}';
    var rootPath = '${rootPath}';
    var parameter = ${ parameter };

 

 

实现获取参数:

 

 

 

 

参考文章:

https://www.cnblogs.com/Sunnor/p/6130380.html

https://blog.csdn.net/ITBigGod/article/details/79685610

https://blog.csdn.net/qq_29569183/article/details/79282673

https://blog.csdn.net/qq_39592670/article/details/82466907

https://blog.csdn.net/qq_41995919/article/details/102944960

 

 

 

 

 

 

 

标签:String,request,modelAndView,rootPath,HTML,import,过滤器,ModelAndView,public
来源: https://www.cnblogs.com/xiejn/p/11997306.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有