Java Servlet接口、web.xml配置、HttpServlet父类

Servlet接口(处理客户端请求、响应给浏览器的动态资源的规范)

创建类实现Servlet接口   实现service方法

web.xml进行servlet的配置

 

Servlet接口的方法

init(ServletConfig config)  初始化  

默认第一次访问时创建servlet对象

ServletConfig:配置信息对象  在web.xml

serviceServletRequest request,ServletResponse response

每次请求都会执行 :创建新的 请求对象 响应对象

destroy():服务器关闭 (销毁servlet对象)

 

public class MyServlet implements Servlet{

public void init(ServletConfig config) throws ServletException {

String servletName=config.getServletName(); //获取Servlet名称

String value=config.getInitParameter("url"); //获取初始化参数

ServletContext context=config.getServletContext();//WEB项目对象

}

public void destroy() {  System.out.println("servlet销毁了"); }

public ServletConfig getServletConfig() {  return null;  }

public String getServletInfo() {  return null;  }

public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException,IOException {

System.out.println("servlet方法正在运行");

}

}

web.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>

<web-app ......>

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>com.oracle.demo01.MyServlet</servlet-class>

<init-param>

<param-name>url</param-name>

<param-value>com.mysql.jdbc.driver</param-value>

</init-param>

<load-on-startup>3</load-on-startup><!--启动时创建Servlet对象-->

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name> <!--*:任意字符串-->

<url-pattern>/MyServlet</url-pattern> <!--完全匹配-->

<!--<url-pattern>*.html</url-pattern>--> <!--扩展名匹配-->

<!--<url-pattern>/java/*</url-pattern>--> <!--目录匹配-->

<!--<url-pattern>/</url-pattern>--> 找不到 <!--缺省匹配-->

扩展名匹配和目录匹配不能混用

</servlet-mapping>

<servlet>......</servlet> <servlet-mapping>......</servlet-mapping>可多套

<welcome-file-list><!--欢迎页面  前一个找不到 再找下一个-->

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

 

HttpServlet(实际开发中 创建类继承HttpServlet)

实现步骤: 包下 newServletClass nameMyServlet  自动继承

自动在web.xml中进行servlet的配置

WindowpreferencesJava/Editor/TemplatesNew

name:servlet   Description:servlet by my    Pattern:代码

快捷键        描述   粘贴代码

 

HttpServlet类的方法

1init()

2doGet(HttpServletRequest request,HttpServletResponse response)

3doPost(HttpServletRequest request,HttpServletResponse response)

4destroy()

访问地址 先去自己写的web.xml中找

找不到再去TomCatconf/server.xml中找 缺省匹配

缺省匹配 默认去WebContent下找静态资源

404

 

ServletContext对象   WEB项目对象(域对象 整个项目共用一个)

 

一个web应用可有多个servlet对象

 

创建:web应用被加载(服务器启动 并 发布web应用)

销毁:web应用被卸载(服务器关闭 或 移除该web应用)

 

web.xml中配置初始化参数

<context-param>

<param-name>driver</param-name>

<param-value>com.mysql.jdbc.Driver</param-value>

</context-param>

<servlet>...</servlet>

 

ServletContext context=this.getServletContext(); //获取WEB项目对象

String initParameter=context.getInitParameter("driver");//获得"driver"参数

System.out.println(initParameter);   //com.mysql.jdbc.Driver

 

//获取文件的绝对路径  通过WebContent下相对路径

String pathc=context.getRealPath("WEB-INF/classes/c.txt");

//F:\java\apache-tomcat-7.0.52\webapps\WEB0002\WEB-INF\classes\c.txt

 

//获取srcclasses)下文件 通过类加载器

String path=类名.class.getClassLoader().getResource("c.txt").getPath();

字节码对象  加载        获取资源  获取路径

 

域对象的通用的方法:

context.setAttribute(String name,Object obj); (键,值)

context.getAttribute(String name);    返回Object类型

removeAttribute(String name)

HttpServletResponseHttpServlet类的响应对象)

 

 

用户登录
WebContent下创建login.jsp 内容为:
<body>
    <form action="/WEB0002/LoginServlet" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登陆">
    </form>
</body>

Java Resources/src下创建包如下
  com.oracle.web
      LoginServlet.java
  com.oracle.service
      UserService.java
  com.oracle.dao
      UserDao.java
  com.oracle.tools
      JDBCUtils.java

WebContent/WEB-INF/lib/mysql-connector-java-5.1.37-bin.jar  Build Path

LoginServlet.java文件内容:
public class LoginServlet extends HttpServlet {
    private UserService userService=new UserService();//创建服务层对象
    public void init() throws ServletException {    //第一次访问 创建对象
        ServletContext context=getServletContext();//获取WEB项目对象
        int num=0;                        //初始化计数器
        context.setAttribute("num", num);    //计数器 存键值对
    }
    public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
        //获取前端提交的用户名和密码
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        //调用Service层方法验证
        int count=userService.loginUser(username, password);
        if(count>0){
            ServletContext context=getServletContext();    //获取项目对象
            int num=(int)context.getAttribute("num");    //取键值对 的值
            num++;
            context.setAttribute("num", num);        //将计数器存回去
            response.getWriter().write("success number:"+num);
        }else{
            response.getWriter().write("faile");
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
        doGet(request, response);        //调用get请求方法
    }
}
UserService.java内容:
public class UserService {
    private UserDao userDao=new UserDao();
    //用户登录
    public int loginUser(String username,String password){
        int count=0;
        count=userDao.loginUser(username, password);//点try
        return count;
    }
}
UserDao.java内容:
public class UserDao {
    //登陆
    public int loginUser(String username,String password) 
throws SQLException{
        Connection conn=JDBCUtils.getConn();
        String sql=
        "select count(*) from user where uname=? and password=?";
        PreparedStatement pst=conn.prepareStatement(sql);
        pst.setString(1, username);
        pst.setString(2, password);
        ResultSet rs=pst.executeQuery();
        int count=0;
        while(rs.next()){
            count=rs.getInt(1);
        }
        JDBCUtils.close(conn, pst, rs);
        return count;
    }
}

 

 

 

posted @ 2019-01-13 12:55  博客张C  阅读(2026)  评论(0编辑  收藏  举报