1. 在eclipse中怎樣設置@的自動提示呢另外還有@WebServlet這個是幹嘛的大神們幫忙指點一下
這是Servlet3.0的新特性之一:通過Annotation(註解)配置Servlet
之前版本的Servlet配置是需要在web.xml中配置:
<servlet>
<servlet-name></servlet-name>
<servler-class></servlet-class>
<load-on-startup></load-on-startup>
<init-param>
<param-name></param-name>
<param-value></param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
而使用Annotation的方式 只需要在java源文件的Servlet類前面加上:
@WebServlet(name=」",urlPatterns={「」},initParams={@WebInitParam(name=」",value=」"),loadOnStartup=1})
這樣可以避免了每創建一個Servlet都需要去web.xml中去配置的麻煩,也避免了項目整合是漏掉某些配置。
2. 怎麼配置servlet
一、servlet的配置
servlet有兩種配置的方法
1.在web.xml文件中配置
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.hwua.servlet.LoginServlet</servlet-class></servlet><servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern></servlet-mapping>
2.在servlet中用Java註解的方式配置
使用註解配置Servlet的步驟:
1. 在Servlet類上貼@WebServlet註解2. 在web.xml文件中進行如下的配置
metadata-complete="true":表示是否忽略Servlet上面的註解
metadata-complete="false"表示是否不忽略Servlet上面的註解,預設值
二、servlet生命周期
public void init(ServletConfig config):初始化方法,在第一次請求時調用,只在最初的時候調用一次.
public void service(ServletRequest req, ServletResponse res):服務方法
public void destroy():銷毀方法
- <init-param>
- <param-name>name</param-name>
- <param-value>admin</param-value></init-param>
- String name = config.getInitParameter("name");
- <context-param>
- <param-name>driver</param-name>
- <param-value>oracle.jdbc.OracleDriver</param-value></context-param>
- ServletContext servletContext = config.getServletContext();
- String initParameter = servletContext.getInitParameter("driver");
- <load-on-startup>1</load-on-startup>
- load-on-startup 的參數是大於等於0的 負數沒有效果load-on-startup 必須在參數init-param標簽的下面 否則init-param會失效
- String getContextPath():獲取上下文路徑,<Context path="上下文" ../>
- String getHeader(String headName):根據指定的請求頭獲取對應的請求頭的值. String getRequestURI():返回當期請求的資源名稱. 上下文路徑/資源名
- StringBuffer getRequestURL():返回瀏覽器地址欄的內容 String getRemoteAddr():返回請求伺服器的客戶端的IP
- String getParameter(String name):根據參數名稱,獲取對應參數的值.String[] getParameterValues(String name):根據參數名稱,獲取該參數的多個值.
- Enumeration<String> getParameterNames():獲取所有請求參數的名字Map<String,String[]> getParameterMap():返回請求參數組成的Map集合.
- key:參數名稱
- value:參數值,封裝在String數組中.
三、在web.xml文件中設置/獲取初始化參數
1.作用域當前的servlet 寫在servlet標簽中
過去參數 在init方法中
2.上下文參數 寫在web-app標簽中
獲取參數 在init方法中
四、設置servlet啟動的時間
默認情況下servlet是在第一次被請求時啟動的
通過在web.xml文件中設置
注意:
五、常用方法:
六、獲取請求參數的方法:
3. java Web 啟動時自動執行代碼的幾種方式
Web容器啟動後執行代碼的幾種方式
其執行順序為:
4===>5===>1===>2===>3
即指定init-method的Bean開始執行
接著實現spring的Bean後置處理器開始執行
然後是Servlet的監聽器執行
再接下來是Servlet的過濾器執行
最後才是Servlet執行
1、實現Servlet監聽器介面ServletContextListener
[java] view plain
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent context) {
}
@Override
public void contextInitialized(ServletContextEvent context) {
// 上下文初始化執行
System.out.println("================>[ServletContextListener]自動載入啟動開始.");
SpringUtil.getInstance().setContext(
<span style="white-space:pre"> </span>WebApplicationContextUtils.getWebApplicationContext(arg0.getServletContext())
<span style="white-space:pre"> </span>);
}
}
然後在web.xml文件配置該監聽器
[html] view plain
<listener>
<listener-class>com.test.init.InitListener</listener-class>
</listener>
2、實現Servlet的過濾器Filter
[html] view plain
public class InitFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException {
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("================>[Filter]自動載入啟動開始.");
// 讀取Spring容器中的Bean[此時Bean已載入,可以使用]
//寫啟動需要執行的代碼
System.out.println("================>[Filter]自動載入啟動結束.");
}
}
然後在web.xml文件配置過濾器即可
[html] view plain
<filter>
<filter-name>InitFilter</filter-name>
<filter-class>com.test.init.InitFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InitFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
3、編寫一個Servlet,在web.xml裡面配置容器啟動後執行即可
[html] view plain
public class InitServlet extends HttpServlet {
/**
*/
private static final long serialVersionUID = 1L;
@Override
public void init(ServletConfig config) {
try {
super.init();
} catch (ServletException e) {
e.printStackTrace();
}
System.out.println("================>[Servlet]自動載入啟動開始.");
// 讀取Spring容器中的Bean[此時Bean已載入,可以使用]
//執行想要的代碼
System.out.println("================>[Servlet]自動載入啟動結束.");
}
}
然後在web.xml文件配置該Servlet的啟動方式為:容器啟動後執行
<servlet>
<servlet-name>InitServlet</servlet-name>
<servlet-class>com.test.init.InitServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>test</param-value>
</init-param>
<!-- 此處指定載入順序為2,表明還有優先順序更高的Servlet要先執行 -->
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>InitServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
關於啟動後執行,由load-on-startup指定:
(1)當值為0或者大於0時,表示容器在應用啟動時就載入這個servlet。值越小,啟動優先順序越高;
(2)當是一個負數時或者沒有指定時,表示該servlet被調用時才載入。
4、如果你使用Spring IOC作為Bean管理容器,那麼可以指定init-method其中init-method表示bean載入成功後,立即執行某個方法。配置如下:start為要執行的方法名稱
[html] view plain
<!-- service -->
<bean id="shopService" class="com.test.teach.service.ShopService" <span style="color:#33ffff;">init-method="start"</span>>
<property name="shopDao" ref="shopDao" />
</bean>
4. @webservlet是什麼註解
這是web應用中Servlet類的註解,後面應該有參數的,應用在Servlet類中。
根據Servlet3.0最新規范(相對於以前的Servlet2.X)提供了新的Servlet配置形式:「註解」
這個說白了就是取代了以前在web.XML文件中<servlet>標簽里的一些東西而已
5. Servlet3.0有哪些註解可以使用
1)創建Servlet@WebServlet(urlPatterns={"/UserServlet"})
public class UserServlet extends HttpServlet
{
}
2)創建Filter
@WebFilter(urlPatterns={"/*"})
public class CharSetFilter implements Filter
{
}
3)創建Listener
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* 使用@WebListener註解將實現了ServletContextListener介面的MyServletContextListener標注為監聽器
*/
@WebListener
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContex銷毀");
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContex初始化");
System.out.println(sce.getServletContext().getServerInfo());
}
}
開發者可以用註解標記Servlet,Filter,Listener等,而不用在部署描述符web.xml文件中配置。隨著註解的引入,部署描述符web.xml文件成為可選的。
6. 請問servlet路徑怎麼設置
路徑設置需要在WEB-INF下的web.xml文件中寫配置路徑,語法如下。
<servlet>
<servlet-name>任意名稱a</servlet-name>
<servlet-class>目標路徑</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>上面的任意名稱a</servlet-name>
<url-pattern>虛擬路徑,訪問路徑</url-pattern>
</servlet-mapping>
或者在3.0及以上版本可以使用@WebServlet註解來進行配置。
手動配置項目需要注意的是目標文件不能說java文件,需要是class文件。(具體的可以去找一個項目(.war文件)把它改成.rarw文件後解壓看看裡面的文件結構和內容)
tomcat的訪問原理是客戶端訪問請求文件,伺服器端通過配置文件進行查找目標文件,所以如果沒有進行配置文件設置那麼就無法找到目標文件。