idea添加web工程

news/2025/2/23 23:50:17

1.idea添加web工程

web工程表示里面既可以写java代码也可以放置页面资源

  1. 创建一个项目
  2. 点击项目,右键——>添加框架支持——>web

1.1 web工程部署到本地的tomcat服务器中

  1. 添加配置——>tomcat server[本地]
  2. 部署
  3. 启动服务器

localhost本地服务器的地址

8080:本地服务器的端口号

qy174_web03表示项目部署的上下文名称

main.html:本地项目的资源名称

2. 设置默认页面

<welcome-file-list>
	<welcome-file>xxx.xxx</welcome-file>
</welcome-file-list>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--设置默认页面-->
    <welcome-file-list>
        <welcome-file>main.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

在web——>WEB-INF——>web.xml中设置

3. 动态网页

3.1 what 动态网页

动态网页:跟静态网页相对的一种网页编程技术

网页代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变。

动态网页就是结合java编程和数据库技术。而且动态网页中可以插入java代码。

常用的动态网页:jsp,freemark,thymeleaf等这些都是常用的动态网页技术。

3.2 what jsp

jsp:java server page java服务网页。该网页经过服务器tomcat编译产生java代码,而且里面可以插入java代码

java_63">3.3 jsp中如何插入java代码

<%
	java代码
%>
  • 实例
<%
    int a=10;
    int b=8;
    int c=a+b;
    out.print("c="+c+"<br>");
    out.print("a="+a);
%>

java_83">3.4 java内容输出到网页中

有两种方式

  • 第一种 使用out对象输出
<body>
<%
    int a=10;
    int b=8;
    int c=a+b;
    out.print("c="+c+"<br>");
    out.print("a="+a);
%>
</body>
  • 第二种 <%=表达式%>
<body>
<%
    int a=10;
    int b=8;
    int c=a+b;
%>
c=<%=c%><br>
b=<%=b%>
</body>

换行:</br/>

3.5 案例

  • 案例1:显示爱好
<body>
<%
    String[] arr=new String[]{"游泳","跑步","爬山"};
%>
<ul>
    <%
        for(String a:arr){
    %>
    <li>
        <%=a%>
    </li>
    <%
        }
    %>
</ul>
</body>

数组赋值:String[] arr=new String[] {};

无序列表:<\ul/><\li></li></ul>

有序列表:<\ol><\li></li></ol>

  • 案例2:九九乘法表
<table border="1">
    <%
        out.print("<tr>");
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                out.print("<td>");
                out.print(j+"*"+i+"="+j*i);
                out.print("</td>");
            }
            out.print("</tr>");
        }
    %>
</table>

表格:table、行:tr、列:td

4. 接收参数

表单提交和超链接传递参数时,我们需要接收传递过来的参数内容,并完成相应的业务功能。servlet中封装了HttpServletRequest类,该类可以操作所有的请求内容。而在**jsp中内置了该类的对象request**。内置表示无需自己创建该类对型,就可以使用该类中的方法

4.1 接收表单的参数

action:表单提交的路径——相对路径、绝对路径

method:表单的提交方式——post、get

表单:form

单选框:radio

多选框:checkbox

文本框:text

下拉框:select+option

提交按钮:submit

普通按钮:button

<body>
<form action="registerDo.jsp" method="post">
    账号:<input type="text" name="zh"/><br>
    密码:<input type="text" name="pwd"/><br>
    国家:<select name="country">
            <option value="Chain">中国</option>
            <option value="USA">美国</option>
            <option value="UK">英国</option>
         </select><br>
    性别:<input type="radio" name="sex" value="man"/>男
         <input type="radio" name="sex" value="woman"/>女<br>
    爱好:<input type="checkbox" name="hobby" value="swing"/>游泳
         <input type="checkbox" name="hobby" value="dancing"/>跳舞
         <input type="checkbox" name="hobby" value="running"/>跑步
         <input type="checkbox" name="hobby" value="reading"/>读书<br>
    自我介绍:<textarea rows="10" cols="20" name="desc">
     </textarea><br>
    <input type="submit" value="注册" />
</form>
</body>

registerDo.jsp

<body>
<%
    String zh = request.getParameter("zh");
    String pwd = request.getParameter("pwd");
    String country = request.getParameter("country");
    String sex = request.getParameter("sex");
    String[] hobby = request.getParameterValues("hobby");
    String desc = request.getParameter("desc");
    out.print("账号"+zh+"密码"+pwd+"国家"+country+"性别"+sex+"爱好"+ Arrays.toString(hobby)+"自我介绍"+desc);
%>
</body>

注意:1. 如果获取的是复选框的值,使用getParamaterValues()方法。输出时:Arrary.toString() 2.单选框必须给定value值,否则拿到的是on 3.getParamater(name)/getParamaterValues(name)

  • 如果idea无法在jsp中使用内置对象

处理方法:在WEB-INF下创建一个目录lib,放入jsp和servlet的jar包

4.2 解决中文乱码

当表单输入的内容为中文时,接收时出现乱码

解决方法:调用request中setCharacterEncoding(“utf-8”)方法

request.setCharacterEncoding("utf-8");//放在接收数据之前

4.3 超链接传递参数

语法:地址?key=value&key=value

<a href="a.jsp?n=cte&a=19">连接参数</a>

a.jsp

<body>
   <%
       //设置请求编码
       request.setCharacterEncoding("utf-8");
       //接受参数
      String n= request.getParameter("n");
      String a= request.getParameter("a");
       out.println("n==========="+n+";a========="+a);
   %>
</body>

5.页面跳转

login.jsp

<body>
<%
    String error = request.getParameter("error");
    if("1".equals(error)){
        out.print("<font color='red'>账号或密码错误</font>");
    }
%>
    <form action="loginDo.jsp" method="post">
         账号:<input type="text" name="name"/>
         密码:<input type="password" name="password"/>
        <input type="submit" value="登录"/>
        <input type="button" value="注册"/>
    </form>
</body>
</html>

loginDo.jsp

<body>
 <%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
     String password = request.getParameter("password");
     //代码写死了。
     out.print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
     if("admin".equals(name)&&"123".equals(password)){
         //登录成功--response响应对象  sendRedirect("跳转的路径")
         response.sendRedirect("main.html");
     }else{
         response.sendRedirect("login.jsp?error=1");
     }
 %>
</body>

在表单页面的跳转:from中的action,跳转到处理页面loginDo.jsp

在表单处理页面:response.sendRedirect(地址)

6. jsp+dao

login.jsp

<%
    String error = request.getParameter("error");
    if("1".equals(error)){
        out.print("<font color='red'>账号或密码错误</font>");
    }
%>
    <form action="loginDo.jsp" method="post">
         账号:<input type="text" name="name"/>
         密码:<input type="password" name="password"/>
        <input type="submit" value="登录"/>
        <input type="button" value="注册" onclick="register()"/>
    </form>
</body>
<script>
     function register() {
         location.href='register.jsp';
     }
</script>

loginDo.jsp

<%
    request.setCharacterEncoding("utf-8");
    String name = request.getParameter("name");
    String password = request.getParameter("password");
    //创建一个UserDao类对象: test测试主函数中内容一样。
    UserDao userDao=new UserDao();
    //调用里面的方法
    User user = userDao.selectByNameAndPwd(name, password);
    if(user!=null){
        //登录成功
        response.sendRedirect("success.jsp");
    }else{
        response.sendRedirect("login.jsp");
    }
%>
</body>

http://www.niftyadmin.cn/n/5863873.html

相关文章

【用deepseek和chatgpt做算法竞赛】——还得DeepSeek来 -Minimum Cost Trees_5

往期 【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_0&#xff1a;介绍了题目和背景【用deepseek和chatgpt做算法竞赛】——华为算法精英实战营第十九期-Minimum Cost Trees_1&#xff1a;题目输入的格式说明&#xff0c;选择了邻接表…

智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践

智能自动化新纪元&#xff1a;AI与UiPath RPA的协同应用场景与技术实践 引言 在数字化转型的浪潮中&#xff0c;企业对于自动化技术的需求已从简单的任务执行转向更复杂的智能决策。传统RPA&#xff08;Robotic Process Automation&#xff09;通过模拟人类操作处理重复性任务…

Spring的过滤器获取请求体中JSON参数,同时解决Controller获取不到请求体参数的问题。

Spring的过滤器获取请求体中JSON参数&#xff0c;同时解决Controller获取不到请求体参数的问题。 文章目录 前言一、需求场景描述二、原因解析三、自定义 HttpServletRequestWrapper 来保存数据解决Controller获取不到的问题。四、案例(要注意的点) 前言 Spring的过滤器获取请…

STM32的HAL库开发---多通道ADC采集(DMA读取)实验

一、实验介绍 1、功能描述 通过DMA读取数据 通过ADC1通道0/1/2/3/4/5&#xff08;PA0/1/2/3/4/5&#xff09;采集测试电压&#xff0c;并显示ADC转换的数字量及换算后的电压值 2、确定最小刻度 VREF 3.3V ---> 0V ≤ VIN ≤ 3.3V --->最小刻度 3.3 / 4096 &#x…

火语言RPA--Excel清空数据

【组件功能】&#xff1a;清空Excel内指定位置的内容 配置预览 配置说明 清空位置 单元格:清空指定单元格内容。 行&#xff1a;清空指定行内容。 列&#xff1a;清空指定列内容。 区域&#xff1a;清空一个区域内容。 行号 支持T或# 行号从1开始。 列名支持T或# 列名从…

【Day46 LeetCode】图论问题 Ⅳ

一、图论问题 Ⅳ 1、字符串接龙 采用BFS&#xff0c;代码如下&#xff1a;&#xff08;判断是否在字典中需要遍历每个位置&#xff0c;同时遍历26中可能有点不优雅&#xff09; # include<iostream> # include<string> # include<vector> # include<un…

HDFS Java 客户端 API

一、基本调用 Configuration 配置对象类&#xff0c;用于加载或设置参数属性 FileSystem 文件系统对象基类。针对不同文件系统有不同具体实现。该类封装了文件系统的相关操作方法。 1. maven依赖pom.xml文件 <dependency><groupId>org.apache.hadoop</groupId&g…

编译部署使用腾讯云cpp-cos-sdk

创建对象存储 在腾讯云上创建对象存储,再创建一个子用户,对他进行授权; 点击我们创建的子账户,在其中新建一个密钥 创建存储桶 然后到控制台上创建一个存储桶用于测试 编译sdk 我们需要去windows上编译sdk源码,在对象存储的控制台中常用工具中有sdk下载:里面有一个c++…