mvcurl加密
A. SpringMVC中url-pattern /和/*的區別
1、<url-pattern>/</url-pattern>:
會匹配到/springmvc這樣的路徑型url,不會匹配到模式為*.jsp這樣的後綴型url。這種形式不會覆蓋任何其它的servlet。它僅僅替換了servlet容器中內建的默認servlet。這種形式通常只用來請求靜態資源(CSS/JS/image等)和展示目錄的列表。servlet容器內建的默認servlet同樣可以處理HTTP cache請求、媒體(聲音/視頻)流以及文件的下載。通常來說,你不會想要覆蓋這個默認的servlet,否則,你將不得不自己處理一些瑣碎的任務。因此,對於sevlet來說,這同樣是一個糟糕的URL模式。說到為什麼JSP頁面的請求並不會命中這個servlet,那是因為servlet容器內建的JSP servlet將會被調用,而這個容器內建的JSP servlet已經默認地映射在了*.jsp上。
2、<url-pattern>/*</url-pattern>:
會匹配所有的url:路徑型的和後綴型的url(包括/springmvc,.jsp,.js和*.html等)。 這種形式將會覆蓋所有其它的servlet。不管你發出了什麼樣的請求,最終都會在這個servlet中結束。因此,對於servlet來說,這是一個很糟糕的URL模式。通常來講,你只會想要在一個Filter中使用這種模式。它可以通過調用doFilter()方法來使請求繼續。
B. mvc2.0中url傳參,如果每個頁面傳的參數個數或者類型都不一樣,是否要為每個頁面規定一個routes
參數如果是引用型的,可以直接在控制器上聲明就行了,會自動忽略null的。
C. html如何隱藏瀏覽器地址欄url參數
這個是不可以的。但是可以採用以下方法:
1、採用post提交模式,一般get提交模式會顯示表單中提交的數據,比如賬號密碼等信息,但是採用post方式提交,URL中就會把這些信息進行進行加密的,此時通過地址欄就無法看到該參數了。
2、後台採用pathinfo模式的URL。一般PHP或者JSP都是支持的,此模式下,URL的傳參將會被隱藏,地址欄里是按mvc模式進行URL訪問的。
D. MVC框架的MVC控制項
在ASP .NET MVC框架中沒有了自己的控制項,頁面顯示完全就回到了寫html代碼的年代。還好在 asp .net mvc框架中也有自帶的HtmlHelper和UrlHelper兩個幫助類。另外在MvcContrib擴展項目中也有擴展一些幫助類,這樣我們就不光只能使用完整的html來編寫了需要顯示的頁面了,就可以使用這些幫助類來完成,但最後運行時都還是要生成html代碼的。
HtmlHelper類
HtmlHelper類位於System.Web.MVC.Html命名空間下。主要包括FormExtensions,InputExtensions,LinkExtensions,SelectExtensions,TextAreaExtensions,ValidationExtensions,RenderPartialExtensions等7個靜態類,他們全部是是採用拓展方法來實現的。
InputExtensions類:主要有5種類型的擴展方法,分別用於CheckBox控制項、Hidden控制項、Pass控制項、RadionButton控制項和TextBox控制項
LinkExtensions類:該類主要用於生成相關鏈接,主要擴展了ActionLink和RouteLink方法。
ActionLink:擴展方法主要實現一個連接,共有十個重載方法。
UrlHelper幫助類
看類名也都知道這個類是用來成URL在 ASP .NET MVC應用程序中。
UrlHelper提供了四個非常常用的四個方法。
1.Action方法通過提供Controller,Action和各種參數生成一個URL,
2.Content方法是將一個虛擬的,相對的路徑轉換到應用程序的絕對路徑,
3.Encode方法是對URL地址進行加密,與Server.Encode方法一樣。
4.RouteUrl方法是提供在當前應用程序中規定的路由規則中匹配出URL。
另外還有兩個屬性,分別是RequestContext和RouteCollection兩個屬性,分別指的是包含HTTP上下文和RouteData兩個屬性,另外,RouteCollection是整個當前應用程序中規定的路由規則。
自定義控制項
微軟提供的HtmlHelper已經是足夠大部分開發人員使用了,但是有一些功能要用微軟提供的HtmlHelper可能還不滿足要求。接下來就談談如何自定義的過程。
首先自定義的方法就是對HtmlHelper對象的擴展。
擴展方法實現的三要素:1、靜態類2、靜態方法3、this關鍵字
1、先定義一個類,例如:MyHtmlHelper:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MvcApplicationFirstDome.Models {
//靜態類
public static class MyHtmlHelper
{
//靜態方法
}
}
2、假設要擴展的方式是GetSpan,作用就是當你傳入參數時,內部封裝了之後返回結果,代碼如下。注意在MyHtmlHelper類中要引用using System.Web.Mvc命名空間。
//靜態方法
public static string GetSpan(this HtmlHelper htmlHelper,string text)
{
return <span style='color:Red'>+text+</span>;
}
經過上面兩步之後HtmlHelper的擴展方法GetSpan基本可以使用了,接下來就講解如何在頁面調用了。
在調用的時候要注意下一命名空間:如果擴展方法的命名空間和頁面的命名空間不同的就必須引用擴展方法的命名空間,否則在頁面是沒有辦法調用自定義的方法的。
引用完命名空間之後,就可以在相應的頁面調用自定義的擴展方法了。
對於某些項目來說,自定義控制項過於復雜和浪費時間。這個時候也可以從技術社區或是源代碼站下載適合自己需求的Mvc控制項。如一些控制項套包,表格控制項等。
E. 在jsp頁面這樣配置url,用到什麼技術
自定義標簽是用戶定義的JSP語言元素。當JSP頁麵包含一個自定義標簽時將被轉化為servlet,標簽轉化為對被 稱為tag handler的對象的操作,即當servlet執行時Web container調用那些操作。
JSP標簽擴展可以讓你創建新的標簽並且可以直接插入到一個JSP頁面。 JSP 2.0規范中引入Simple Tag Handlers來編寫這些自定義標記。
你可以繼承SimpleTagSupport類並重寫的doTag()方法來開發一個最簡單的自定義標簽。
創建"Hello"標簽
接下來,我們想創建一個自定義標簽叫作<ex:Hello>,標簽格式為:
<ex:Hello />
要創建自定義的JSP標簽,你首先必須創建處理標簽的java類。所以,讓我們創建一個HelloTag類,如下所示:
package com.runoob;import javax.servlet.jsp.tagext.*;import javax.servlet.jsp.*;import java.io.*;public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
out.println("Hello Custom Tag!");
}}
以下代碼重寫了doTag()方法,方法中使用了getJspContext()方法來獲取當前的JspContext對象,並將"Hello Custom Tag!"傳遞給JspWriter對象。
編譯以上類,並將其復制到環境變數CLASSPATH目錄中。最後創建如下標簽庫:<Tomcat安裝目錄>webapps\ROOT\WEB-INF\custom.tld。
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD</short-name>
<tag>
<name>Hello</name>
<tag-class>com.runoob.HelloTag</tag-class>
<body-content>empty</body-content>
</tag></taglib>
接下來,我們就可以在JSP文件中使用Hello標簽:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%><html>
<head>
<title>A sample custom tag</title>
</head>
<body>
<ex:Hello/>
</body></html>
以上程序輸出結果為:
Hello Custom Tag!
訪問標簽體
你可以像標准標簽庫一樣在標簽中包含消息內容。如我們要在我們自定義的Hello中包含內容,格式如下:
<ex:Hello>
This is message body</ex:Hello>
我們可以修改標簽處理類文件,代碼如下:
package com.runoob;import javax.servlet.jsp.tagext.*;import javax.servlet.jsp.*;import java.io.*;public class HelloTag extends SimpleTagSupport {
StringWriter sw = new StringWriter();
public void doTag()
throws JspException, IOException
{
getJspBody().invoke(sw);
getJspContext().getOut().println(sw.toString());
}}
接下來我們需要修改TLD文件,如下所示:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD with Body</short-name>
<tag>
<name>Hello</name>
<tag-class>com.runoob.HelloTag</tag-class>
<body-content>scriptless</body-content>
</tag></taglib>
現在我們可以在JSP使用修改後的標簽,如下所示:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%><html>
<head>
<title>A sample custom tag</title>
</head>
<body>
<ex:Hello>
This is message body </ex:Hello>
</body></html>
以上程序輸出結果如下所示:
This is message body
自定義標簽屬性
你可以在自定義標准中設置各種屬性,要接收屬性,值自定義標簽類必須實現setter方法, JavaBean 中的setter方法如下所示:
package com.runoob;import javax.servlet.jsp.tagext.*;import javax.servlet.jsp.*;import java.io.*;public class HelloTag extends SimpleTagSupport {
private String message;
public void setMessage(String msg) {
this.message = msg;
}
StringWriter sw = new StringWriter();
public void doTag()
throws JspException, IOException
{
if (message != null) {
/* 從屬性中使用消息 */
JspWriter out = getJspContext().getOut();
out.println( message );
}
else {
/* 從內容體中使用消息 */
getJspBody().invoke(sw);
getJspContext().getOut().println(sw.toString());
}
}}
屬性的名稱是"message",所以setter方法是的setMessage()。現在讓我們在TLD文件中使用的<attribute>元素添加此屬性:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD with Body</short-name>
<tag>
<name>Hello</name>
<tag-class>com.runoob.HelloTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>message</name>
</attribute>
</tag></taglib>
現在我們就可以在JSP文件中使用message屬性了,如下所示:
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%><html>
<head>
<title>A sample custom tag</title>
</head>
<body>
<ex:Hello message="This is custom tag" />
</body></html>
以上實例數據輸出結果為:
This is custom tag
你還可以包含以下屬性:
屬性
描述
name 定義屬性的名稱。每個標簽的是屬性名稱必須是唯一的。
required 指定屬性是否是必須的或者可選的,如果設置為false為可選。
rtexprvalue 聲明在運行表達式時,標簽屬性是否有效。
type 定義該屬性的Java類類型 。默認指定為 String
description 描述信息
fragment 如果聲明了該屬性,屬性值將被視為一個 JspFragment。
以下是指定相關的屬性實例:
.....
<attribute>
<name>attribute_name</name>
<required>false</required>
<type>java.util.Date</type>
<fragment>false</fragment>
</attribute>.....
如果你使用了兩個屬性,修改TLD文件,如下所示:
.....
<attribute>
<name>attribute_name1</name>
<required>false</required>
<type>java.util.Boolean</type>
<fragment>false</fragment>
</attribute>
<attribute>
<name>attribute_name2</name>
<required>true</required>
<type>java.util.Date</type>
</attribute>.....
F. 困擾半年之久asp.net mvc中ActionResult接受URL中文參數亂碼問題
我最近也遇到這個問題,您可以用c# 里的base64編碼就好了呵呵。網路一下 base64加密解密就行。其實你自己寫也行,就幾行代碼。
G. springmvc的攔截器,怎麼設置不攔截的url
<mvc:interceptors>
<bean id="allInterceptor" class="com.base.interceptor.AllInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/*/**" />
<bean id="CommonInterceptor" class="com.base.interceptor.CommonInterceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/dical/**"/> //攔截的url
<mvc:mapping path="/admin/**"/>//攔截的url
<mvc:exclude-mapping path="/admin/login"/> //不攔截的url
<mvc:exclude-mapping path="/admin/main"/>//不攔截的url
<bean id="DicalInterceptor" class="com.base.interceptor.DicalInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
H. ASP.NET MVC 如何隱藏地址欄的url
你想怎樣隱藏,隱藏參數,還是隱藏路徑?
參數就是post,如果是get,你可以加密,後台再解密
路徑不能隱藏,最多就是根據你的規則,自定義路徑,這個就是基本的seo了,你可以把/home/index變成/h1,這個自己查一查資料吧
I. springMVC中Dispatcher中的/和/*的區別
第一、MVC框架的出現是為了將URL從HTTP的世界中映射到JAVA世界中,這是MVC框架的核心功能。而在URL這一點SpringMVC無疑更加優雅。第二、從設計實現角度來說,我覺得SpringMVC更加清晰。即使我們去對比Struts2的原理圖和SpringMVC的類圖,它依然很讓人困惑,遠沒有SpringMVC更加直觀:第三、設計原則更加明朗。【Openforextension/closedformodification】這條重要的設計原則被寫在了Spring官方的reference中SpringMVC章節的起始段:「Openforextension,closedformodification」principle.並且重點很好地體現在SpringMVC的實現當中,可以擴展,但卻不能改變。我曾經擴展過Spring的IOC、AOP功能,這一點SpringMVC應該和Spring一脈相承。第四、組件化的設計方案和特定的設計原則讓SpringMVC形散神聚。神——SpringMVC總是沿著一條固定的邏輯主線運行形——SpringMVC卻擁有多種不同的行為模式