导航:首页 > 净水问答 > springmvc过滤注入

springmvc过滤注入

发布时间:2022-02-09 03:34:23

① 大哥,在springMVC下防御xss漏洞。和sql注入的问题知道如何解决吗

不知道你是想防哪种xss,存储型?反射型?Dom型?
sql注入预防在编程时机可以做到,不要使用字符串拼接的sql语句,就可以做到

② 求springmvc 注入多个bean的方法

说明注解方式没有问题,你先检查你的拼写有没有问题,然后确定路径都没有问题,最后才是set get
还有

你的controller service 的配置怎么能放到一起呢 他们引用都是不一样的
参考这个:http://blog.csdn.net/jzhf2012/article/details/8463643 祝你好运朋友。

③ SpringMVC怎么注入HttpServletResponse

springMVC4中获取request和response对象有以下两种简单易用的方法:
1、在control层获取
在control层中获取HttpServletRequest和HttpServletResponse对象有以下两种简单方式:
1)通过方法参数直接在action类中获取
@Controller
class Action{
@RequestMapping("/path")
public String getReqAndRes(HttpServletRequest request, HttpServletResponse response){
/** 相关业务代码 此时可以直接使用request response对象 */
}
}

2)利用spring web提供的@ModelAttribute注解
@ModelAttribute放在类方法的参数前面表示引用Model中的数据
@ModelAttribute放在类方法上面则表示该Action类中的每个请求调用之前都会执行该方法,因此在此方法里面可以做一些请求预处理,利用此特性就可以抽象出一个基本Action类,然后所有的Action类都继承自这个基本Aciton类,在基本Action类里面获取相应的request、response、session对象:
public class BaseAction{

protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession session;

@ModelAttribute
public void setReqAndRes(HttpServletRequest request, HttpServletResponse response){
this.request = request;
this.response = response;
this.session = request.getSession();
}

/** 其他业务代码 */
}

2、通过spring提供的RequestContextHolder在非contrller层获取request和response对象
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
HttpServletResponse response = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse();
ServletContext context = ContextLoader.().getServletContext();

过滤器和SpringMVC的拦截器的区别

过滤器和拦截器的区别:

①拦截器是基于Java的反射机制的,而过滤器是基于函数回调。
②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

写了点测试代码,顺便整理一下思路,搞清楚这几者之间的顺序:

1.过滤器是JavaEE标准,采用函数回调的方式进行。是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("before...");
chain.doFilter(request, response);
System.out.println("after...");
}

chain.doFilter(request, response);这个方法的调用作为分水岭。事实上调用Servlet的doService()方法是在chain.doFilter(request, response);这个方法中进行的。

2.拦截器是被包裹在过滤器之中的。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}

a.preHandle()这个方法是在过滤器的chain.doFilter(request, response)方法的前一步执行,也就是在 [System.out.println("before...")][chain.doFilter(request, response)]之间执行。

b.preHandle()方法之后,在returnModelAndView之前进行,可以操控Controller的ModelAndView内容。

c.afterCompletion()方法是在过滤器返回给前端前一步执行,也就是在[chain.doFilter(request, response)][System.out.println("after...")]之间执行。

3.SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。所以过滤器、拦截器、service()方法,dispatc()方法的执行顺序应该是这样的,大致画了个图:其实非常好测试,自己写一个过滤器,一个拦截器,然后在这些方法中都加个断点,一路F8下去就得出了结论。

⑤ SpringMVC实现依赖注入的几个常用注解的用

1. @Component 是所有受Spring 管理组件的通用形式
2. @Repository 对应数据访问层的Bean
3. @Service 对应业务层的Bean
4. @Controller 对应控制层的Bean
5. @Resource 默认按名称来装配注入,只有当找不到与名称相匹配的bean时才会按照类型来装配注入
6. @Autowired 默认按类型来装配注入,如果想按照名称来装配注入,则需要结合@Qualifier一起使用
7. @Qualifier 默认按名称来装配注入

⑥ SpringMVC如何有效的防止XSS注入

在数据进入数据库之前对非法字符进行转义,在更新和显示的时候将非法字符还原
在显示的时候对非法字符进行转义
如果项目还处在起步阶段,建议使用第二种,直接使用jstl的<c:out>标签即可解决非法字符的问题。当然,对于Javascript还需要自己处理一下,写一个方法,在解析从服务器端获取的数据时执行以下escapeHTML()即可。
附:Javascript方法:
String.prototype.escapeHTML = function () {
return this.replace(/&/g, ‘&’).replace(/>/g, ‘>’).replace(/</g, ‘<’).replace(/”/g, ‘"’);}
如果项目已经开发完成了,又不想大批量改动页面的话,可以采用第一种方法,此时需要借助Spring MVC的@InitBinder以及org.apache.commons.lang.PropertyEditorSupport、org.apache.commons.lang.StringEscapeUtils
public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() { super(); }
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript, boolean escapeSQL) {super();this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;}@Overridepublic void setAsText(String text) {
if (text == null) {
setValue(null);} else {String value = text;
if (escapeHTML) { value = StringEscapeUtils.escapeHtml(value); }
if (escapeJavaScript) { value = StringEscapeUtils.escapeJavaScript(value); }
if (escapeSQL) { value = StringEscapeUtils.escapeSql(value); } setValue(value); }}@Overridepublic String getAsText() { Object value = getValue(); return value != null ? value.toString() : “”; }}
在上面我们做了一个EscapeEditor,下面还要将这个Editor和Spring的Controller绑定,使服务器端接收到数据之后能够自动转移特殊字符。
下面我们在@Controller中注册@InitBinder
@InitBinder
public void initBinder(WebDataBinder binder) {
这个方法可以直接放到abstract Controller类中,这样子每个Controller实例都能够拥有该方法。

⑦ SpringMVC注入service

1、首先需要到spring-servlet.xml配置
<!-- 启用spring mvc 注解 -->
<context:annotation-config />

<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="controller"></context:component-scan>

<!-- 完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation." />
2、Controller使用@Controller进行标记
3、service注入用下面的方式
@Autowired
private Service service;
4、方法映射用下面的方式
@RequestMapping(value = "/aaa")

⑧ springmvc中filter怎么注入service

获取applicationContext,然后自己加载bean。
ServletContext context = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils
.getWebApplicationContext(context);
ArticleInfoService articleinfoService = (ArticleInfoService) ctx
.getBean("yourServiceName");

⑨ 在js中给springmvc注入对象怎么注入不进去

是的,
如果你 @Resource(name="xxxxxx") xxxxx需要和@service上的值相同
如果你只写 @Resource,会按照类型注入, 子类类型也会被注入

⑩ 请教SpringMVC 中 Autowired 注入报错

么有找到要注入的bean
你的配置有问题吧
<context:component-scan base-package="myforum.,myforum.service" />

有这样的写法吗?
不想扫描某个包使用 表达式过滤掉就可以了。
spring 中的自动扫描中加入
<context:component-scan base-package="myforum" >

<context:exclude-filter type="regex" expression="myforum.controller.*" />
</context:component-scan>

排除掉就可以了吧。你试试
提供的都是半截代码,实在是没法判断

阅读全文

与springmvc过滤注入相关的资料

热点内容
用什么材料清洗管道水垢 浏览:946
阜阳废水 浏览:358
001x7有弱酸性阳离子交换树脂 浏览:62
农村生活污水治理站项目施工方案 浏览:737
纯净水机反渗透膜怎么清洗 浏览:1000
五菱迷你空调滤芯多少钱 浏览:583
污水处理厂投资额度 浏览:381
毕业进污水处理厂 浏览:170
格力净水机怎么使用 浏览:637
不锈钢除菌过滤器 浏览:423
ro膜净水器结构原理 浏览:446
空气滤芯报警怎么清除 浏览:40
面包车滤芯怎么更换 浏览:769
工业废酸废水处理设备 浏览:924
提升机主副编码器清零 浏览:913
离子交换属于什么技术 浏览:319
山东反渗透家用净水器什么类型好 浏览:782
酸碱脱脂废水处理 浏览:372
廊坊市废水污水处理全套设备公司 浏览:477
基坑废水 浏览:440