【困扰了我半天时间的maven里面有包,但是Web文件里程序运行就是没有包或者类】

困扰了我半天时间的maven里面有包,但是Web文件里程序运行就是没有包或者类

问题出现

附BaseServlet和TeacherServlet代码:

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("已经进入了后台");

        //解决中文乱码:
        //一定要在获取请求参数之前调用有效:
        req.setCharacterEncoding("UTF-8");
        //解决响应中文乱码
        resp.setContentType("text/html;charset=UTF-8");

        //反射
        //String action = req.getParameter("action");
        //获取action业务鉴别字符串,获取相应的业务 方法反射对象

        //实训老师用后缀路径来直接判断:
        //1.获取请求路径
        String uri = req.getRequestURI();//HJ_JW/users/login
        System.out.println("请求uri:"+uri);
        //2.获取方法名称
        String methodName = uri.substring(uri.lastIndexOf("/") + 1);//login
        System.out.println("方法名称:"+methodName);
        //3.获取方法对象Method,根据方法名称反射方法对象
        try {
            Method method = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            //调用业务 方法
            method.invoke(this,req,resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

TeacherServlet:

/**
 * 这是我们的Teacher对应的控制器
 */
@WebServlet("/teacherServlet/*")
public class TeacherServlet extends BaseServlet{
    private TeacherService teacherService =new TeacherServiceImpl();
    /**
     * 添加老师
     * 请求的URL:/HJ_JW/teacherServlet/add
     * 请求的方式:POST
     * 请求的类型:表单类型
     * 返回的类型:JSON
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    public void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Map<String, Object> result = new HashMap<>();

        //1.获取前端表单提交的数据
        String username = req.getParameter("username");//这里的绿色部分尽量跟实体类属性保持一致
        String password = "123456";
        String name = req.getParameter("name");
        String gender = req.getParameter("gender");
        String rank = req.getParameter("rank");
        String pic = req.getParameter(null);


        //2.非空校验
        if (StringUtils.isNullOrEmpty(username) || StringUtils.isNullOrEmpty(password) || StringUtils.isNullOrEmpty(name) || StringUtils.isNullOrEmpty(gender) || StringUtils.isNullOrEmpty(rank)){
            result.put("code",-1);
            result.put("msg","您的输入项不能为空!");
        }else{
            //访问数据库
            //创建需要保存到数据库的数据
            Users teacher = new Users(null, username, password, name, gender, rank, pic, 1, 0);

            if (teacherService.register(teacher)==1){
                result.put("code",1);
                result.put("msg","教师添加成功");
            }else {
                result.put("code",0);
                result.put("msg","教师添加失败!");
            }
        }

        //5.将结果响应到前端
        PrintWriter pw = resp.getWriter();
        //创建 gson,将map转换为 JSON
        Gson gson = new Gson();
        String toJson = gson.toJson(result);
        pw.write(toJson);
    }

Maven 仓库:
maven仓库

代码没有问题,注解路径也没有问题,但是运行时就会报错:
注意:这是路径问题,但是错误大同小异,在下方会再出现 notfoundclass之类的报错
对此,因为是 maven 新手,所以困扰了我半天时间,终于最后找到了原因,没有在artifice里面加入jar

解决方法

1.打开 Project Structure工程结构
项目结构
2.找到 Output Layout 下的 Available Elements
第三步

3.鼠标右键项目名称 然后点击 Put into Output root,这样的话,就将maven的jar包导入 artifice里面了

这样的话问题就成功解决啦!新手上路,多多关照!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值