導航:首頁 > 凈水問答 > 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過濾注入相關的資料

熱點內容
污水管圖s代表什麼 瀏覽:428
DPF過濾器壓差 瀏覽:851
污水處理廠空氣監測有什麼用 瀏覽:361
智能雨水收集回用一體機 瀏覽:83
污水池不滲水怎麼辦 瀏覽:18
腎過濾作用是什麼 瀏覽:963
甲階熱固性酚醛樹脂 瀏覽:555
水垢影響鍋爐爆管分析報告 瀏覽:808
飲水機接水桶多少錢 瀏覽:662
污水打渣機不上水怎麼辦 瀏覽:574
污水處理廠賬務處理怎麼做 瀏覽:500
九級純水是什麼 瀏覽:433
不銹鋼水壺的水垢可以用牙膏嗎 瀏覽:786
板框式恆壓過濾20min 瀏覽:554
十三五水處理行業規劃 瀏覽:360
uf凈水器濾芯怎麼拆 瀏覽:966
承包污水管道改造錢好拿嗎 瀏覽:79
生化棉過濾棉細菌屋順序瀑布濾 瀏覽:816
污水滴到電車上變白怎麼擦乾凈 瀏覽:221
成都離子束去疤 瀏覽:636