servlet与jsp跳转方法及问题

您所在的位置:网站首页 form表单提交可不可以直接跳到另一个界面 servlet与jsp跳转方法及问题

servlet与jsp跳转方法及问题

2023-11-03 02:29| 来源: 网络整理| 查看: 265

记录了一些自己在做项目的过程中遇到的问题和解决过程

简介

项目第一步注册与登录。项目采用的是SpringBoot+mybatis.登录注册页面是用jsp+servlet来写的。以下没有完整记录代码, 就是记录了一些关键步骤和知识点以及遇到的问题和解决方法。

from表单提交到servlet

jsp页面中的信息需要通过表单提交给servlet来处理。下面看一下提交方法。

创建一个servlet类 登录的servlet类

该servlet需要继承HttpServlet类并重写相应的doGet和doPost方法。

web.xml 注册servlet---->动态页面jsp需要配置,让浏览器知道请求分发到哪一个servlet。 LoginServlet com.tang.share_nice.service.servlet.LoginServlet LoginServlet /login

LoginServlet下面对应的对应相应的servlet的包路径

form表单提交数据 用户登录 用户名: 密码:

要注意的是:form表单中的action对应web.xml配置的url-pattern /loginaction=“login”

通过上面三个步骤的配置,在点击表单的提交按钮是,就可以成功通过post方法将请求交给servlet来处理。

jsp页面跳转

web项目中的安全目录是WEB-INF,这个页面是无法通过浏览器中输入的绝对路径访问的,需要添加一些配置

servlet跳转jsp if (login.getRet()) { request.getRequestDispatcher("/WEB-INF/views/success.jsp").forward(request, response); } else { request.getRequestDispatcher("/WEB-INF/views/defeat.jsp").forward(request, response); }

在servlet里面跳转需要通过request的forward的方法,不能使用redirect重定向。 jsp路径需要写出从WEB-INF开始的完整路径及页面名称

jsp跳转jsp

jsp跳转jsp也会因为安全性被限制,需要在web.xml中添加配置。

register /WEB-INF/views/register.jsp register /registerjsp

配置完这个之后,就可以在jsp页面通过如下的链接访问了

注册

share_nice_war_exploded为项目的程序名,registerjsp为在web.xml中配置的url-pattern 除此之外也可以这样访问

test 问题及解决方法 mapper用@Autowired进行注入的时候报空指针异常

Service层注入的mapper对象为空 在这里插入图片描述 之前以为是mybatis配置文件问题,导致没能注入成功。但是在test中测试数据库部分,是可以成功注入并且执行sql的。 后面检查 发现,是因为,在servlet层,我是 new的服务层service对象,所以导致对象内部使用注入方式实例化的对象没能注入成功。因为new出来的对象是不在Spring容器中管理的,所以没办法使用容器提供的注入方法。所以,在有用到注入来实例化对象时,前后要保持一致,要么统一使用new,要么统一使用容器提供的注入方式@Autowired或者@Resource。

servlet层无法使用@Autowired来进行注入

在找到上面的原因之后,我将servlet对象中用到的对象也进行了注入实例化。但是在debug时,service对象依旧为空。此时想到了servlet类的特殊性,他是放在servlet容器中来进行管理的,Spring也管不到他,所以注入需要使用特殊的方式

@Override public void init(ServletConfig config) { SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext()); }

在servlet层添加该方法,将servlet上下文环境添加到Spring管理的上下文环境中,就能支持@Autowired注解了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3