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>
相关推荐
aningxiaoxixi1 分钟前
JAVA之 Lambda
java·开发语言
月下点灯6 分钟前
使用Set集合新特性,快速实现一个商品SKU(单品)规格选择器
前端·javascript·vue.js
大侠Luffy6 分钟前
做了这些SEO动作,独立开发的网站开始被搜索引擎逐量收录
前端·seo
四棱子13 分钟前
炫酷!18.5kb实现流体动画,这个开源项目让个人主页瞬间高大上!
前端·开源
Sparkxuan14 分钟前
封装WebSocket
前端·websocket
工呈士14 分钟前
Redux 实践与中间件应用
前端·react.js·面试
Nano15 分钟前
深入解析 JavaScript 数据类型:从基础到高级应用
前端
无羡仙15 分钟前
浮动与BFC容器
前端
xphjj15 分钟前
树形数据模糊搜索
前端·javascript·算法
刺客_Andy15 分钟前
React 第三十四节 Router 开发中 useLocation Hook 的用法以及案例详解
前端·react.js