JSP跳转、传值给Servlet 完整项目 解决getparameter爆红、404、中文乱码等问题

自己在这上面走了很多弯路啊!
编译器用的是Intelij+服务器用的是Tomcat
为了照顾到一些真的什么都不会的同学,我把每一步都截图了,多图预警!

1.新建项目

在这里插入图片描述

在这里插入图片描述

新建项目,就选普通的java EE。
在这里插入图片描述
我的项目就叫FirstConnect,建好的project应该是这个样子。

在这里插入图片描述

2.解决getparameter爆红问题

在windows里面找到你建立项目的路径,新建两个文件夹。

在这里插入图片描述
根目录下面新建文件夹 \lib
在这里插入图片描述

在web\WEB-INF下面新建文件夹classes

接下来找到你的Tomcat目录 打开lib 复制jsp-api.jar和servlet-api.jar
在这里插入图片描述

复制到我们在project根目录下面新建的lib目录

在这里插入图片描述

接下来回到intelij,点击file->Project Structure

在这里插入图片描述

接下来Modules->Dependencies->加号,1.JARS or directories

在这里插入图片描述

选择我们project/lib里面那两个jar包,添加进来

在这里插入图片描述

getparameter爆红问题解决了!
(其实另一种解决方案是在libraries里面添加tomcat的lib里面的包,但是我觉得不如复制到project里面,添加dependencies保险)

3.intelij创建package,servlet

project structure界面不要关,还没设置完!在这里插入图片描述Modules->Paths->Use module compile output path 选择我们在WEB-INF下面新建的classes文件夹。output path,Test output path暂时都设成这个。

在这里插入图片描述

接下来回到project目录,src文件夹右键新建package(建package是个好习惯)

在这里插入图片描述

还是src文件夹或我们package文件夹,右键新建servlet(不然可能没有这个新建servlet的选项哦)

在这里插入图片描述

新建servlet一定要勾选这个annotated class,不然你就等着改web.xml吧!

4.写servlet和jsp的代码

servlet.java的代码

package com.njust.connect;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "Servlet1",urlPatterns = {
    
    "/Servlet1"})//解决404问题
public class Servlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    

        String str=request.getParameter("character");
        String name=new String(str.getBytes("ISO-8859-1"),"UTF-8");//解决中文乱码问题

        System.out.println("doPost HELLO WORLD");
        System.out.println(name);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        System.out.println("doGET HELLO WORLD");
    }
}

index.jsp的代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
  <head>
    <title>标题</title>
  </head>
  <body>
  最喜欢的
  <form action="/Servlet1" method="post">//解决404问题
    <input type="text" name="character"  >
    <input type="submit" >
  </form>~
  </body>
</html>

具体怎么解决404和中文乱码问题在第6大段会解释,想直接看的往下翻。
在这里插入图片描述接下来连接Tomcat,选择右上角的Edit Configureations

在这里插入图片描述
左上角的绿色加号->TomcatServer->Local

在这里插入图片描述
给它改个名字,我就改成了MyTomcat。我不喜欢勾选这个After Launch,因为我喜欢用UC浏览器(快,UC打钱)。

在这里插入图片描述
还没完,Deployment->Artifact…添加一下!

在这里插入图片描述
如果出现这个样子就是好用了。

5.启动

在这里插入图片描述
点击绿色三角,先是加载,如果tomcat是中文乱码就去tomcat根目录改xml,与本文无关。

在这里插入图片描述
在浏览器输入localhost:8080 连接到我们的index网页

直接输入http://localhost:8080/index.jsp也可

在这里插入图片描述

输入内容,然后点提交
在这里插入图片描述
会跳转到一个空白的页面,
在这里插入图片描述

控制台输出以上文字,恭喜你成功了

ps. 园田海未是lovelive里面的大和抚子哦~
在这里插入图片描述

6.404、中文乱码问题是怎么解决的

首先确保你第三大段

“Modules->Paths->Use module compile output path 选择我们在WEB-INF下面新建的classes文件夹。”

这一步是正确的。不然jsp很可能找不到servlet而报错

接着,

404问题:
请保证servlet的urlPatterns 与 jsp 的action相等!比如我的例子里都是 “/Servlet1”(这个卡了我很久,最后从贴吧老哥那学来的)

@WebServlet(name = "Servlet1",urlPatterns = {
    
    "/Servlet1"})//解决404问题
<form action="/Servlet1" method="post">

表单提交中文乱码问题(我输出“园田海未”,输出却是乱码):在servlet中添加这两句话

String str=request.getParameter("character");
String name=new String(str.getBytes("ISO-8859-1"),"UTF-8");

这是因为它传输用的编码与我们常用的编码不一样导致的,这两句话的作用是转换。

以上

猜你喜欢

转载自blog.csdn.net/qq_42915442/article/details/106461213