在javaweb中ssm框架添加rest接口的方法以及cas单点登录web.xml中添加白名单url的方法

restful接口
restful接口具有很多优势,比如可以通过一个接口的get/put/delete类似实现查询、新增、删除、修改的功能,笔者所做的项目是需要用到restful接口来提供给其他项目使用
第一步:在web.xml里面配置拦截白名单
首先,别的项目想要访问我们对外暴露的接口时候,我们必须将该类请求放行不拦截,别的项目才可以访问到我们的请求,我们使用的是cas单点登录的框架,至于单点登录相关的知识,网上有很多介绍,怎么集成,怎么写过滤器都有相关教程,读者可以自行百度,我们需要在web.xml中添加如下配置:

<filter>
		<filter-name>CAS Authentication Filter</filter-name>
		<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
		<init-param>
			<param-name>casServerLoginUrl</param-name>
		    <param-value>https://127.0.0.1:8443/sso/login</param-value>
		</init-param>
		<init-param>
         <description>URL白名单</description>
         <param-name>ignorePattern</param-name>
         <!--此处用于配置多个地址 -->
         <param-value>/res/|/arz/|/sso/</param-value>
      </init-param>
      <init-param>
         <description>忽略请求URL匹配模式(REGEX正则)</description>
         <param-name>ignoreUrlPatternType</param-name>
          <param-value>REGEX</param-value>
      </init-param>
	</filter>

接下来我们在controller层编写好一个控制器类,在其中编写相关实现方法即可:

package com.cn.zhangb.controller;

@RequestMapping(value = "/res")
@RestController
public class RestController<main> extends BaseController {

    static final Logger LOGGER = LoggerFactory.getLogger(RestController.class);

    @Autowired
    private TestService testService;
  /**
     * 根据用户账号获取系统菜单列表
     */
     //设置请求方式和编码
    @RequestMapping(value = "/getUserMenu", method = {RequestMethod.POST}, produces = "application/json;charset=utf-8")
	public String getUserMenu(HttpServletRequest request) {
		String requestStr = "";
		try {
			requestStr = this.getRequestPostData(request);
		} catch (IOException e) {
			e.printStackTrace();
			return JsonUtil.toErrorJson("接收参数异常!").toString();
		}
		JSONObject paramJson = JSONObject.fromObject(requestStr);
		List<Menu> menus = null;
		if (paramJson.getString("account") != null && paramJson.getString("yybh") != null) {
			menus = testService.getMenus(paramJson.getString("account"), paramJson.getString("yybh"));
			JSONObject resultObj = JsonUtil.toSuccessJson("获取菜单信息成功!", menus);
			return resultObj.toString();
		} else {
			return JsonUtil.toErrorJson("接收参数异常!").toString();
		}
	}

接下来我们可以用postman请求接口:
在这里插入图片描述
这样我们就可以很方便的实现不同项目直接的接口互相调用了

原创文章 24 获赞 21 访问量 709

猜你喜欢

转载自blog.csdn.net/zhangbinch/article/details/105730537