一个html页面上显示dopost,Java遇见HTML-servlet(一)

Java遇见HTML的6篇文章技术较老只是在熟悉java基础知识和了解mvc模型思想

servlet的应用

servlet可以理解为就是一个jsp,实现servlet有三步:

1、在web.xml中注册servlet,

2、在src目录下创建servlet类继承HttpServlet类,重写doGet和doPost方法,

3、然后在jsp中使用表单或者超链接等方式跳转到创建的servlet类中。

用servlet实现一个简单的功能,在界面上输入注册信息,提交后显示注册的信息。

第一步:

创建学生类实体类,与界面上要输入的字段信息对应,注意日期类型为Date,是否签协议为Boolean类型,该类放到src目录的com.zhidaoauto.model包下。

package com.zhidaoauto.model;

import java.util.Date;

public class Users {

private String UserName;//用户名

private String Password;//密码

private String Email;//邮箱

private String Sex;//性别

private Date Birthday;//日期

private String Favorite;//爱好

private String introduce;//介绍

private Boolean flag;//是否接受协议

public Users(){

}

public String getUserName() {

return UserName;

}

public void setUserName(String userName) {

UserName = userName;

}

public String getPassword() {

return Password;

}

public void setPassword(String password) {

Password = password;

}

public String getEmail() {

return Email;

}

public void setEmail(String email) {

Email = email;

}

public String getSex() {

return Sex;

}

public void setSex(String sex) {

Sex = sex;

}

public Date getBirthday() {

return Birthday;

}

public void setBirthday(Date birthday) {

Birthday = birthday;

}

public String getFavorite() {

return Favorite;

}

public void setFavorite(String favorite) {

Favorite = favorite;

}

public String getIntroduce() {

return introduce;

}

public void setIntroduce(String introduce) {

this.introduce = introduce;

}

public Boolean getFlag() {

return flag;

}

public void setFlag(Boolean flag) {

this.flag = flag;

}

@Override

public String toString() {

return "Users{" +

"UserName='" + UserName + '\'' +

", Password='" + Password + '\'' +

", Email='" + Email + '\'' +

", Sex='" + Sex + '\'' +

", Birthday=" + Birthday +

", Favorite='" + Favorite + '\'' +

", introduce='" + introduce + '\'' +

", flag=" + flag +

'}';

}

}

第二步:创建reg.jsp输入注册信息页面,放到web的根目录下

关注代码中的注释的点

Created by IntelliJ IDEA.

User: Administrator

Date: 2020/4/26

Time: 16:16

To change this template use File | Settings | File Templates.

--%>

注册页面
用户名:
密码:
确认密码:
电子邮箱:
性别:

出生日期:
爱好:

NBA

音乐

电影

上网

自我介绍:
接受协议:是否接受协议

第三步:写servlet类

注意是在src下创建servlet包创建userservlet类,该类继承HttpServlet类。

package servlet;

import com.zhidaoauto.model.Users;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class userservlet extends HttpServlet {

// 按Alt+Insert快捷键,重写doGet和doPost方法

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// doGet方法中调用doPost方法,要不然通过url链接不会走到post方法中

doPost(req,resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// 设置编码为utf-8,能显示中文

req.setCharacterEncoding("utf-8");

//定义users类的对象,把获取到的参数值都赋值给该类中的属性

Users users=new Users();

users.setUserName(req.getParameter("UserName"));//用户名赋值

users.setPassword(req.getParameter("Password"));//密码赋值

users.setEmail(req.getParameter("Email"));//邮箱赋值

users.setSex(req.getParameter("Sex"));//性别赋值

//出生日期赋值

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

try {

Date date=sdf.parse(req.getParameter("Birthday"));

users.setBirthday(date);

} catch (ParseException e) {

e.printStackTrace();

}

//爱好赋值,是checkbox类型,用string[]获取数值

String[] favorite=req.getParameterValues("Favorite");

StringBuilder favorites=new StringBuilder();

if (favorite!=null){

for (String s:favorite){

favorites.append(s+",");

}

}

//去掉最后一个逗号

favorites.replace(favorites.length()-1,favorites.length()," ");

users.setFavorite(favorites.toString());

//自我介绍赋值

users.setIntroduce(req.getParameter("introduce"));

//是否签协议赋值,定义flag标签,如果勾选了就代表有值设置为true,没勾选就为false

boolean flag=false;

String[] flags=req.getParameterValues("flag");

if (flags!=null){

flag=true;

}else {

flag=false;

}

users.setFlag(flag);

System.out.println(users.toString());

//把注册成功的用户对象存储到session中,getusers要用到再users.jsp中创建userbean时,跟id一致,这样才能在users.jsp中获取参数信息。

req.getSession().setAttribute("getusers",users);

//内部转发到users.jsp页面中

req.getRequestDispatcher("../users.jsp").forward(req,resp);

}

}

第四步:创建users.jsp

在界面上显示注册的用户信息

特别注意创建useBean时,id要和userservlet类中设置session是的名称一致,就是getusers

使用jsp动作获取参数值

Created by IntelliJ IDEA.

User: Administrator

Date: 2020/4/26

Time: 16:17

To change this template use File | Settings | File Templates.

--%>

展示用户信息
用户名: 
密码: 
电子邮箱: 
性别: 
出生日期: 
爱好: 
自我介绍: 
接受协议: 

第五步:在界面上查看结果

6b4e037dc1e0

image.png

6b4e037dc1e0

image.png

servlet路径跳转问题

总共有3处地方路径需要关注。

1、jsp中超链接href路径和表单中action跳转路径

// 获取当前项目路径

String path=request.getContextPath();

%>

使用相对路径访问servlet

使用绝对路径访问servlet

2、web.xml中url-pattern的路径

Faces Servlet

servlet.HelloServlet

1

Faces Servlet

/servlet/HelloServlet

3、servlet类中重定向和内部跳转的路径

// 使用内部转发跳转到result.jsp页面,斜杠代表当前根目录,如果不加就找不到result.jsp文件

req.getRequestDispatcher("/result.jsp").forward(req,resp);

// 使用重定向跳转到result.jsp页面

resp.sendRedirect("/result.jsp");

//如果jsp文件放到文件夹下,可以返回到上层目录再到文件夹下找该jsp文件

req.getRequestDispatcher("../testservleturl/testservletusr.jsp").forward(req,resp);

6b4e037dc1e0

image.png

6b4e037dc1e0

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值