idea添加web工程

1.idea添加web工程

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

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

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

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

localhost本地服务器的地址

8080:本地服务器的端口号

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

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

2. 设置默认页面

html 复制代码
<welcome-file-list>
	<welcome-file>xxx.xxx</welcome-file>
</welcome-file-list>
html 复制代码
<?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代码

3.3 jsp中如何插入java代码

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

3.4 java内容输出到网页中

有两种方式

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

换行:</br/>

3.5 案例

  • 案例1:显示爱好
jsp 复制代码
<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:九九乘法表
jsp 复制代码
<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

jsp 复制代码
<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

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")方法

jsp 复制代码
request.setCharacterEncoding("utf-8");//放在接收数据之前

4.3 超链接传递参数

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

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

a.jsp

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

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

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

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

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>
相关推荐
加油乐几秒前
JS计算两个地理坐标点之间的距离(支持米与公里/千米)
前端·javascript
小小小小宇1 分钟前
前端在 WebView 和 H5 环境下的缓存问题
前端
懒羊羊我小弟4 分钟前
React JSX 语法深度解析与最佳实践
前端·react.js·前端框架
JPC客栈6 分钟前
LeetCode面试经典 150 题(Java题解)
java·leetcode·面试
冷冷清清中的风风火火8 分钟前
关于敏感文件或备份 安全配置错误 禁止通过 URL 访问 Vue 项目打包后的 .gz 压缩文件
前端·vue.js·安全
HyperAI超神经17 分钟前
【vLLM 学习】Aqlm 示例
java·开发语言·数据库·人工智能·学习·教程·vllm
异常驯兽师17 分钟前
IntelliJ IDEA 项目导入后 Java 文件图标显示为红色小写 j 的解决方法
java·路径配置
纪元A梦20 分钟前
华为OD机试真题——数据分类(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
小行星12521 分钟前
前端根据后端返回的excel二进制文件流进行导出下载
前端·excel
常年游走在bug的边缘29 分钟前
基于spring boot 集成 deepseek 流式输出 的vue3使用指南
java·spring boot·后端·ai