Servlet&网络访问

来源:互联网 发布:证大财富淘宝贷假不假 编辑:程序博客网 时间:2024/04/30 13:17

                          Servlet&网络访问

首先得了解软件的开发模式:

 A:单机模式:开发的程序在一台电脑上运行,如world,excel等

                    缺点:软件比较庞大,如果运行要求高,则每台电脑都需要有高配置才行。

B:C/S结构(Client/Server)

              把软件运行时各台电脑运行时需要的功能都放到服务器上,在每台电脑运行的功能放到客户端,这样可以减轻客户端的压力同时也减轻了服务端的压力,也实现了通过功能让不同电脑访问的。如:qq。360等!

             缺点:当电脑数量较多时需要在每台电脑上安装客户端比较繁琐,软件更新比较繁杂

C:B/S结构(Browser/Server)

            开发这种模式的程序不需要开发客户端,客户端采用浏览器作为客户端,这种模式只需要在服务器端开发软件,客户端通过浏览器进行访问即可,常用的开发动态网站的技术有:ASP,  ASP.NET,  PHT,  JSP等


网络程序结构:

网络程序的分类:B/S    C/S


网络访问的网络基础知识:

 URL(Uniform Resource Locator)统一资源定位符

超文本传输协议(Http, HyPerText Transfer Protocol)是互联网上采用的最广泛的一种网络协议,设定Http的最初目的视为了提供发布和接受Html页面的方法

端口(port)计算机与外界通讯交流的出入口,http默认的端口是80, 端口能识别要访问的是计算机上的那个进程,一个进程对应一个端口

两种请求方式: GET和POST,GET是将请求消息放在请求行中(URL中),信息可见,不安全

                                                     POST是将请求消息放在请求体中,信息不可见,相对GET来说较安全,其他区别就不赘述了

Tomcat

  Tomcat是小型服务器端容器

      tomcat服务器想要正常运行,必须首相配置环境变量:

新建系统变量:

CATALINA_HOME=D:\tomcat6

在path环境变量中加入如下内容:

%CATALINA_HOME%\bin;

检测是否配置合适:将bin目录下的startup.bat双击,或者拖到dos中 ,如果闪掉表示配置失败,考虑jdk是否安装合适,jdk配置也需要标准的JAVA_HOME

修改Tomcat的端口  Tomcat->cont->server.xml     <Connector port="8080"/>进行修改就可以了

WEB-INF下面的web.xml(站点部署描述符文件)

<welcome-file-list>

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

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

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

</welcome-file-list>

如果用户在访问网站时没有指定具体的访问哪个网页,则系统默认会按照这里的配置逐个查找匹配的网页,以最先找到网页的为准进行运行.

ROOT为系统默认的站点

那么如何建立自己的站点呢?  在ROOT同级目录下新建文件夹,然后将ROOT下面的文件拷贝过来

如何修改myeclipse中站点中新建网页jsp的默认编码: window->proferences->搜索jsp->Encoding中进行修改


使用JSP的九大内置对象之一(

request:请求对象,获取客户端发送过来的数据                   response:响应对象,将服务器端的信息回送到客户端

out:输出信息到客户端                                                                   session:会话对象

application:应用程序对象                                                             pageContext:页面上下文对象

 page:网页对象                                                                                config:配置对象

exception:异常对象

)


新建web项目在WebRoot下面写jsp页面


Servlet

Servlet是由java语言编写,运行在服务器端的程序,并由服务器调用


Servlet程序实现

1.编写一个类继承HttpServlet类,但eclipse提供方便,直接可以新建Servlet,下面操作会自动生成

2.重写doGet()和doPost()的方法

3.注册Servlet


Servlet跳转

 服务器跳转:地址栏不改变,能传递request对象         调用request.getRequestDispatcher("success.jsp").forward(request, response);方法进行跳转

客户端跳转: 地址栏改变        不能传递request对象     调用reponse.sendRedirect(" ");  重定向


简单页面请求登陆:

页面通过表单提交,action=“/Servlet”    //此为在web.xml配置文件中配置Servlet的路径,配置文件会通过路径访问到Servlet类

<servlet>
    ③<servlet-name>Servlet</servlet-name>
   ④ <servlet-class>Servlet</servlet-class>
  </servlet>

  <servlet-mapping>
    ②<servlet-name>Servlet</servlet-name>
    ①<url-pattern>/Servlet</url-pattern>
  </servlet-mapping>

配置文件中通过 1找到到2,通过2找到3,通过3找到4;


以下为Servlet中的简单代码:

public void doGet(HttpServletRequest request,HttpServletResponse response)

            throwsServletException, IOException {

        System.out.println("======doGet====");

        //将GET请求转嫁给Post

        this.doPost(request,response);

    }

    /**

     * 当客户端采用post提交方式提交时自动调用的方法

     * @param request 请求对象

     * @param response 响应对象

     */

    public voiddoPost(HttpServletRequest request, HttpServletResponse response)

            throwsServletException, IOException {

        System.out.println("=====doPost====");

        response.setContentType("text/html;charset=utf-8");

        PrintWriterout = response.getWriter();

        //1.得到客户端的提交方式

        Stringmethod=request.getMethod();

        System.out.println("method="+method);

        StringuserName="";

        Stringpwd="";

        if("GET".equals(method)){

            //GET提交方式的处理代码

            userName=request.getParameter("userName");

            pwd=request.getParameter("pwd");

            //解决GET提交时的中文乱码问题,同时这个方法也可以解决post提交的中文乱码问题

      pwd=this.encoding(pwd);

        }elseif("POST".equals(method)){

            //POST提交方式的处理代码

           //解决Post提交的中文乱码问题

            request.setCharacterEncoding("UTF-8");

            userName=request.getParameter("userName");

            pwd=request.getParameter("pwd");

        }

        Stringmsg="userName="+userName+",pwd="+pwd;

        System.out.println(msg);

        out.println(msg);

        /*if("admin".equals(userName)&& "123".equals(pwd)){

            request.setAttribute("userName",userName);

            request.getRequestDispatcher("success.jsp").forward(request,response);

        }else{

            //在Servlet中得到session对象的方法

            HttpSession  session=request.getSession();

            session.setAttribute("userName",userName);

            response.sendRedirect("login.jsp");

        }*/

       

       

        out.flush();

        out.close();

    }

    /**

     *解决GET提交的中文乱码问题,同时这种方式也适合用POST提交的中文乱码问题的解决方式,但是post直接可以调用自己的方法解决中文乱码问题,而不需要自己写

     * 张三  UTF-8

     * 传递到服务器时,tomcat服务器将张三对应的二进制使用ISO8859_1编码表进行解码.

     * 解决方案:将乱码使用原先的编码表ISO8859_1进行编码,之后再使用正确的编码表UTF-8进行解码就正确了.

     */

    private Stringencoding(String userName) {

        if(userName!=null){

            try {

                returnnew String(userName.getBytes("ISO8859_1"),"UTF-8");

            } catch(UnsupportedEncodingException e) {

                //TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

        return null;

    }





0 0
原创粉丝点击