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的访问原理是客户端访问请求文件,服务器端通过配置文件进行查找目标文件,所以如果没有进行配置文件设置那么就无法找到目标文件。
