Java 之 Web前端(一)

1.http

  a.定义:超文本传输协议

  b.作用:web服务器与web浏览器之间通信

  c.步骤:

    ①客户端与web服务器建立连接(IP地址与端口号)

    ②客户端发送http请求(请求资源路径)

    ③服务器接收客户端的http请求,生成http响应回发

    ④服务端关闭连接;客户端解析回发响应

2.Web容器:

  a.常用:Tomcat、Weblogic、jboss

  b.作用:用来管理Servlet

3.Servlet:

  a.定义:在服务端运行的Java程序

  b.作用:在服务端产生动态内容

  c.使用:

    ①创建Servlet类,继承HttpServlet,重写doGet方法

public class MyFirstServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        PrintWriter out = resp.getWriter();

        out.write("<html>");
        out.write("<head>");
        out.write("</head>");
        out.write("<body>");
        out.write("<p style=‘color:red‘>this is p</p>");
        out.write("</body>");
        out.write("</html>");

    }
}

    ②配置web.xml文件

<servlet>
    <servlet-name>myFirst</servlet-name>
    <servlet-class>com.servlet.MyFirstServlet</servlet-class>
</servlet>

    ③Servlet的映射

<servlet-mapping>
    <servlet-name>myFirst</servlet-name>
    <url-pattern>/myfirst</url-pattern>
</servlet-mapping>

4.Servlet的生命周期

  a.创建与初始化  init()

    ①默认是在Servlet第一次访问时创建和初始化(单例模式)

    ②注:在<servlet>标签中的最后加<load-on-startup>1</load-on-startup>以在服务器启动时创建和初始化,其中的1表示优先级,0为默认,数字越小优先级越大

  b.服务  doGet()与doPost()

    ①doGet()对应表单method属性中的get;doPost()对应表单method属性中的post

    ②注:若重写了service()方法,则不调用doGet()或doPost()

  c.销毁  destroy()

    ①在服务器停止时调用destroy()

  d.初始化参数的设定

    ①设置servlet的初始化参数(在<servlet>标签内书写)

<init-param>
    <param-name>email</param-name>
    <param-value>[email protected]</param-value>
<init-param>

      调用

String email = getServletConfig().getInitParameter("email");

    ②设置全局上下文的初始化参数(与<servlet>标签平级)

<context-param>
    <param-name>name</param-name>
    <param-value>zhangsan</param-value>
<context-param>

      调用

String name = getServletConfig(). getServletContext().getInitParameter("name");

5.响应

  a.错误信息处理

    ①sendError()方法

response.sendError(500,"服务器内部出现异常");

    ②配置<error-page>(在<web-app>中书写)

<error-page>
    <error-code>404</error-code>
    <location>/404Error.html</location>
<error-page>

  b.重定向(跳转)

response.sendRedirect("../MyHtml.html");

    注:这里实际发送了两次请求

6.请求

  a.根据name获取值

String userName = reques.getParameter("userName");    //获取单个元素的value值

String[]  favs = reques.getParameterValues("fav");    //获取多个元素的value值(适用于复选框)

  b.其他请求的方法

request.getMethod()    //获取请求的方法

request.getRequestURI()    //获取请求的方法URI

request.getRequestURL()    //获取请求的URL

request.getServletPath()    //获取servlet的映射路径

request.getContextPath()    //获取servlet中Context的路径

request.getRemoteAddr()    //获取请求的IP地址

  c.通过url地址传参

<a href="login?userName=zhangsan&userType=1">登陆<a>    <!--其中userName和userType都为name的值,zhangsan和1都为value的值-->

  d.解决get方式中乱码问题

userName = new String(userName.getBytes("ISO-8859-1"),"utf-8")

  e.请求头信息:

Enumeration<String> names = request.getHeadNames();

while(names.hasMoreElements()){

String name = (String)names.nextElement();
String value = request.getHeader(name);

}

7.Enum(枚举)

  a.作用:规定一定范围的数据取值范围

  b.用法:

//申明
public enum WeeK{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

//使用
public static void main(String[] args){
    test(Week.Sunday);
}

public void test(Week w){
}

8.文件上传

  a.注意:

    ①表单的提交方式只能是post

    ②表单必须设置为复合类型表单

<form action="UploadServlet" method="post" ectype="multipart/form-data">
    <input type="file" name="photo"/>
</form>

    ③在表单标签中必须要有name属性(<input>中)

  b.用法:

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //处理文件上传操作

                //在硬盘中去创建一个FileItem工厂
                DiskFileItemFactory factory = new DiskFileItemFactory();

                //文件上传处理类
                ServletFileUpload fileUpload = new ServletFileUpload(factory);

                //设置上传文件的大小,以字节为单位
                fileUpload.setFileSizeMax(2*1024*1024);

                try {
                    List<FileItem> items = fileUpload.parseRequest(request);

                    for(FileItem item : items){

                        if(!item.isFormField()){
                            upload(item);
                        }else{
//                            item.getString();
                        }

                    }

                } catch (FileUploadException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    }

    private void upload(FileItem item){

        //将虚拟路径转换为物理路径
//        System.out.println(getServletContext().getRealPath("image"));
        String path = getServletContext().getRealPath("img");

        File file = new File(path+"/"+new Date().getTime()+item.getName());

        try {
            item.write(file);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

9.文件下载

        String fileName = request.getParameter("file");

        response.setHeader("Content-Disposition", "attachment; filename=" +fileName );

        String path = getServletContext().getRealPath("img");

        File file = new File(path + "\\"+fileName);

        FileInputStream inputStream = new FileInputStream(file);

         ServletOutputStream  out = response.getOutputStream();

         byte[] bytes = new byte[1024];
         int b = 0;
         while(( b = inputStream.read(bytes))!=-1 ){
             out.write(bytes,0,b);
             out.flush();
         }
         out.close();

10.转发

  a.语法:

request.getRequestDispatcher("login.html").forward(request,response);

  b.与重定向的区别

    ①转发:整个过程只发送了一次请求;重定向:发送了2次请求

    ②转发:地址栏不会发生变化;重定向:地址栏会发生变化

  c.转发中的request属性

request.setAttribute("msg","hello");    //属性值为Object类型的

String msg = (String) request.getAttribute("msg");
时间: 2024-10-29 04:23:07

Java 之 Web前端(一)的相关文章

Java与Web前端发展前景及薪资对比

Web前端和Java谁的薪资待遇高?关于这个问题,是很多网友都感兴趣的,在各大论坛贴吧上也看到了不少类似的问题. 现在的互联网行业飞速发展,因此有很多小伙伴想要进入IT行业分一杯羹,但是关于学习什么技术还有不少的小伙伴在犹豫中.今天就和大家一块看一下Web前端和Java开发谁的薪资待遇高?Web前端和Java开发谁的发展前景更好? 一.Web前端 1.Web前端发展前景 现在学Web前端开发还是不错的选择,人才缺口大,发展前景好.在未来几年,互联网市场对Web前端人才的需求量仍然处于一个较高的水

Java 之 Web前端(三)

1.JSP a.全称:Java Server Page b.运行:翻译.编译.类装载.类实例化.(初始化.服务.销毁 (这三点为Servlet的生命周期)) 2.JSP的基本组成 a.HTML模板 注:如果有<base href="<%=basePath%>">,JSP就在项目的根目录下.否则就在当前位置 b.Java小脚本 ①方法嵌套的脚本 (直接书写在Servlet中的Service方法中) <% String str = "lisi&quo

Java 之 Web前端(五)

1.过滤器 a.定义:是一个中间组件,用于拦截源数据和目的数据之间的消息,并过滤二者之间传递的数据 b.步骤: ①建class继承Filter实现抽象方法 public class EncodingFilter implements Filter{ @Override public void doFilter(ServletRequest req , ServletResponse resp , FilterChain chain){ req.setCharacterEncode("utf-8&

女孩子适合学web前端还是Java编程?

近几年随着互联网的快速发展,对于Web前端开发的人才需求越来越大,就业薪资也不断的上升,随着行业的火爆,高薪回报吸引了很多有志青年投身互联网行业.女孩子适合学Web前端还是Java? 纵观现阶段互联网Web前端开发工程师的就业人员,女孩子从事这个行业的比例不大,由于这种现象的存在,当有女孩说想要学Web前端开发,很多不一样的声音就出来了,说女生不适合做程序员,其实不然,没有什么东西是你天生做不了的,干不了,只能说明你还不够努力. 虽然少,不是照样有女孩子在做么?而且由于男女比例不协调,所以女生做

web前端入门与java入门

关于web前端入门一.软件结构划分1.C/S结构:Client(客户)-Server(服务器)之间的交互.特点:客户端的软件必须升级才能使用服务器高版本的功能.例如:阿里巴巴等.2.B/S结构:Browser(浏览器)-Server(服务器)之间的交互.特点:浏览器端的软件无需特定的升级就可访问服务器端的网站.例如:网易新闻等.JavaWeb/EE均基于B/S结构.二.网站基本认识基于B/S结构的应用都叫网站.组成:由很多的html标签组成.三.W3C组织规范了html.css.js(javas

no java web 框架选型 + web 前端框架选型 实践

以前,觉得web框架的唯一选择是 java spring 全家桶,但用起来踊实比较重,配置文件比较重,开发起来比较重,在专注于写业务核心代码时,已经要做不少框架配置的事; 后来用了下python ,比java自由,但又不想js那么太目由,而且也支持类,把python当成java用很好用; 又去查了一下python能开发什么,web也是支持的,试了flask ,开发很简单,可以很快专注于业务逻辑; python性能比不上java ,又查到了tornado ,性能要好些,而且是面向对象的封装,用着比

web前端和Java学哪个好?哪个就业形势好

因为平时经常关注互联网方面的一些最新动态,今天在网上逛论坛的时候不经意间看到了一则问题:大学学的工科,与IT完全无关.现在准备博一把,先培训在转行就业. 近几年随着互联网的快速发展,对于web前端开发的人才需求越来越大,就业薪资也不断的上升,随着行业的火爆,高薪回报吸引了很多有志青年投身互联网行业. 纵观现阶段互联网web前端开发工程师的就业人员,女孩子从事这个行业的比例不大,由于这种想象的存在,当有女孩说想要学习web前端开发,想成为一个牛逼的程序员的时候,很多不一样的声音就出来了,说女生不适

web前端开发规范

本文原创,这里首先声明,转载注明本文出处,翻版必究! web前端开发规范的现实意义 1.提高团队的协作能力 2.提高代码的重复利用率 3.可以写出质量更高,效率更好的代码 4.为后期维护提供更好的支持 5.可读性高 一.命名规则 1.html命名规则: a.文件名称命名规则:统一使用小写英文字母.数字.下划线的组合,不得包含汉字空格和特殊字符 2.命名原则:方便理解.方便查找 b.索引文件命名原则:index.html.index.htm.index.asp.index.aspx.index.j

nodejs 和web前端JavaScript什么区别

web前端javascript组成: ECMAScript,(是js的标准,js是它的具体实现和扩展,它描述语言的语法和基本对象,如:语法,运算符,语句,继承机制,数据结构以及一些内置对象) DOM(文档对象模型),描述处理网页内容的方法和接口,将整个文档document解析成dom树供用户使用js对文档进行处理. BOM(浏览器对象模型),描述可以和浏览器窗口交互的方法和接口(对象结构),如:window对象,history.location.navigator等. nodejs除了语言基础E