1.Servlet路徑配置問題
首先是在servlet里配置
注解配置:
@WebServlet("/TestInit")
public class TestInit extends HttpServlet
//在類的前面加一個注解,這里的注解加一個 "/" 表示當前的根目錄下,就是 地址/項目名/TestInitxml配置:
在xml里配置也是一個道理
<url-pattern>/TestInit</url-pattern>
這里的路徑也是在 地址/項目名/TestInit
2.網(wǎng)頁里的路徑
如果還是按/xxxx的話,比如:
<form action = "/xxx" method = "get">
<input type = "submit" value = "跳轉"/>
</form>
會跳轉到一個localhost:8888/se
當然是404了。
直接設置相對路徑:
<form action = "se" method = "get">
<input type = "submit" value = "跳轉"/>
</form>
就可以正確跳轉了。
但是如果我們要訪問的路徑是上一個目錄下的,這時候如何設置相對路徑呢,比如:
當前頁面路徑是localhost:8888/test/test/test
但是我們要訪問的路徑是localhost:8888/test/test1/test
這時候相對路徑寫: ../test1/test
即可,../表示當前路徑向前退一個路徑,在linux里也是這樣的,cd ..退到上一個路徑
需要注意的是即使是在servlet里轉發(fā)跳轉,直接/xxx 還是會跳到服務器根目錄去所以在servlet里跳轉一樣要遵循在html里的方法。
2.servlte的初始化參數(shù):
注意,必須是在xml里配置的那個url訪問才可以get到這個初始化方法,并且順序是先username1-->username2并且當前servlet配置的信息只能被當前的servlet所共享,要全局初始化的話,要用context的初始化參數(shù),見下
//1.首先是配置對應的xml文件里的數(shù)據(jù):
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>
xxx.xxx
</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>senninha</param-value>
</init-param>
//并且可以設置多組初始化數(shù)據(jù)
<init-param>
<param-name>username1</param-name>
<param-value>senninha1</param-value>
</init-param>
</servlet>
//2.然后在是servlet里重寫inti()方法:
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
Enumeration<String> initParaNames = config.getInitParameterNames();
while(initParaNames.hasMoreElements()){
String name = initParaNames.nextElement();
System.out.println(name + ":"+config.getInitParameter(name));
}
super.init(config);
}
獲取全局初始化參數(shù),這個方法可以在全局獲取,并且注解或者xml里配置的url都可以獲取到
既可以在重寫的init方法里獲取context對象:
ServletContext context = config.getServletContext();
//也可以在doGet方法里通過:
ServletContext context = request.getServletContext()
//然后獲取初始化值就大同小異了:
Enumeration<String> param = context.getInitParameterNames;
while(param.hasMoreElements){
String name = param.nextElement():
System.out.println(name+ ":"+ context.getInitParameter(name)
}