zoukankan      html  css  js  c++  java
  • 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:javaapache-tomcat-7.0.52webappsWEB0002WEB-INFclassesc.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;
        }
    }

     

     

  • 相关阅读:
    union和union all 合并查询
    c#中取整,向上取,向下取
    多个DataSet数据合并
    js未定义判断
    C# 获取时间差状态
    SQL中inner join、outer join和cross join的区别
    朗朗跄跄的受伤,跌跌撞撞的坚强
    IIS7.5 平台.NET无后缀名伪静态实现办法-服务器配置
    检查Android系统版本
    js 实现搜索功能
  • 原文地址:https://www.cnblogs.com/javscr/p/10262329.html
Copyright © 2011-2022 走看看