乱七八糟的java web 基础

简介

本片文章是对java web的一些粗浅学习的一些内容总结,虽然这个东西已经快被时代抛弃了,开发的安全性、简易性以及开发效率等方面都远远比不上现在的框架,但是学习过程中对我自己也是有所提高的,对于开发中的一些东西也有了一些新的理解,不过就不再本片文章中描述了。

MVC三层框架

MVC 三层架构是比较原始和简单的框架结构了,M指的是model,是指程序中的示例对象以及相关的方法,V是视图层,也就是展示给大家看的,C,Controller控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。
在这里插入图片描述

在实际工作过程中程序的分层可能远远不止这几层。可能还会包括,持久层dao、service(服务层,负责具体的业务实现),filter过滤层等等。

Servlet

下面的代码是我学习的时候进行随便写的,写java web 这块的话记得创建类然后继承HttpServlet即可,其中还需要HttpServletRequest、HttpServletResponse两个类对参数数据进行接收以及返回相关结果,所以需要导入相关的类,建议使用IDEA,写的时候就自动导入了,还是比较好用的。

还有一点需要注意,那就是java web 涉及到的这些类并不在官方库中,需要导入jar包或者使用版本管理工具,类似maven等进行依赖的配置,才能够进行使用。

package Servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class param extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String result = req.getParameter("value");
        resp.setContentType("text/html");
//        System.out.print(result);
        PrintWriter out = resp.getWriter();
        out.print("good");


    }
}

HttpServlet 中有doGet、doPost等方法,就是用来接收不同请求类型的请求的。

HttpServletRequest
获取参数值的方法。

String getParameter(String name):通过指定名称获取参数值;
String[] getParameterValues(String name):通过指定名称获取参数值数组,有可能一个名字对应多个值,例如表单中的多个复选框使用相同的name时;
Enumeration getParameterNames():获取所有参数的名字;
Map getParameterMap():获取所有参数对应的Map,其中key为参数名,value为参数值。


getParameterValues

<form action="ParamServlet" method="post">

       上网:<input type="checkbox" name="hobby" value="netplay" /><br/>

       踢球:<input type="checkbox" name="hobby" value="football" /><br/>

       看书:<input type="checkbox" name="hobby" value="read" /><br/>

       编程:<input type="checkbox" name="hobby" value="programme" /><br/>

    <input type="submit" value="提交"/><br/>

    </form>
---------------------------------------------------------------------------------
 // 获取所有名为hoby的参数值

       String[] hobbies = request.getParameterValues("hobby");

       System.out.println(Arrays.toString(hobbies));

getParameterMap(),request.getParameterMap()方法返回Map类型,对应所有参数。其中Map的key对应参数的名字;Map的value对应参数的值。

   <form action="ParamServlet" method="post">

       姓名:<input type="text" name="name"/><br/>

       年龄:<input type="text" name="age"/><br/>

       性别:<input type="text" name="sex"/><br/>

    <input type="submit" value="提交"/><br/>

    </form>
--------------------------------------------------------------------------
       Map<String,String[]> map = request.getParameterMap();

       Set<String> keys = map.keySet();

       for(String key : keys) {

           String[] value = map.get(key);

           System.out.println(key + " = " + value[0]);

       }
------------------------------------------------------------------------------
sex = male

name = zhangSan

age = 23

转发

req.getRequestDispatcher("/hello.html").forward(req, resp);

重定向

response.sendRedirect(path);

访问配置
HttpFilter

Filter 顾名思义,就是过滤请求或者返回包的,可以对内容进行修改、拦截、部分设置等内容,可以对请求内容进行过滤、编码转换等工作,可以有效的统一处理一些信息,或者对恶意攻击数据进行处理,大大提高程序的安全性。


import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpFilter;
import java.io.IOException;


public class Filter2 extends HttpFilter{

    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {


        res.setContentType("text/html;charset=UTF-8");
        super.doFilter(req, res, chain); //注意这一行

    }
}

过滤代码一定要写在super.doFilter()之前,不然会不生效
其实就是调用的父方法里面的这个,chain.doFilter(),意思是进入下一个过滤器,也就是在请求某个servlet之后,会经过一系列的Filter 进行过滤,这个我们成为过滤链,chain.doFilter()方法就是表示进入下一个过滤器,没有下一个过滤器的话则访问到servlet 了,过滤链的先后顺序由配置决定。

访问配置

无论是servlet 还是Filter,都需要配置之后才能进行访问,java web 中有两种配置方式

第一种,是在web.xml中,进行配置。

在这里插入图片描述

servlet 配置示例

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>Servlet.servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

Filter 配置示例

 <filter>
    <filter-name>byte</filter-name>
    <filter-class>Filter.Filter2</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>byte</filter-name>
    <url-pattern>/hello</url-pattern>
  </filter-mapping>
IDEA 配置

首先是关于新项目的配置,我是用的是2021.2版本的,关于新项目的配置如下图所示,在这里配置之后,每次创建新项目时才会直接生效,不然回到是还是默认配置。
在这里插入图片描述

maven、gradle等都是版本管理工具,可以对依赖进行管理,同时可以提供某些模板等,是比较方便的工具。不建议使用IDEA 自带默认的,建议自行配置,具体配置方法,请自行百度
在这里插入图片描述

可以在这里配置maven 的运行环境
在这里插入图片描述

这里可以配置项目的运行环境。

在这里插入图片描述在这里插入图片描述

依赖配置

在使用版本管理工具类似maven 等工具时,可以直接在xml 文件中进行配置,只要遵循某些语法即可,maven可以使用这个网站辅助

https://mvnrepository.com/

在这里插入图片描述

不适用版本工具导入jar 包的话,可以将jar 包放入到 lib目录中,同样可以达到效果。

在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值