href=“${pageContext.request.contextPath}/css/bootstrap.min.css”
type=“text/css” />
href=“${pageContext.request.contextPath}/css/style.css” type=“text/css” />
- 登录
href=“${pageContext.request.contextPath}/jsp/register.jsp”>注册
- 购物车
href=“${pageContext.request.contextPath}/jsp/order_list.jsp”>我的订单
<button type=“button” class=“navbar-toggle collapsed”
data-toggle=“collapse” data-target=“#bs-example-navbar-collapse-1”
aria-expanded=“false”>
Toggle navigation <span
class=“icon-bar”> <span
class=“icon-bar”>
id=“bs-example-navbar-collapse-1”>
- 手机数码(current)
- 电脑办公
- 电脑办公
- 电脑办公
Submit
style=“width:100%;background:url(‘${pageContext.request.contextPath}/img/regist_bg.jpg’);”>
style=“background: #fff; padding: 40px 80px; margin: 30px; border: 7px solid #ccc;”>
会员注册USER REGISTER
<input type=“text” name=“username” class=“form-control” id=“username”
placeholder=“请输入用户名”>
<input type=“password” name=“password” class=“form-control” id=“inputPassword3”
placeholder=“请输入密码”>
<input type=“password” class=“form-control” id=“confirmpwd”
placeholder=“请输入确认密码”>
<input type=“email” name=“email” class=“form-control” id=“inputEmail3”
placeholder=“Email”>
<input type=“text” name=“name” class=“form-control” id=“usercaption”
placeholder=“请输入姓名”>
name=“sex” id=“inlineRadio1” value=“男” checked=“checked” >
男
name=“sex” id=“inlineRadio2” value=“女”>
女
<input type=“submit” width=“100” value=“注册” name=“submit”
border=“0”
style="background: url(‘${pageContext.request.contextPath}/img/register.gif’) no-repeat scroll 0 0 rgba(0, 0, 0, 0);
height:35px;width:100px;color:white;">
<img src=“${pageContext.request.contextPath}/img/footer.jpg”
width=“100%” height=“78” alt=“我们的优势” title=“我们的优势” />
- 关于我们
- 联系我们
- 招贤纳士
- 法律声明
- 友情链接
- 支付方式
- 配送方式
- 服务声明
- 广告声明
setAttribute这个方法,在JSP内置对象session和request都有这个方法,这个方法作用就是保存数据,然后还可以用getAttribute方法来取出。
比如现在又个User对象,User curruser = new User(“zhangsan”, 20, “男”);
1,request.setAttribute(“curruser”, curruser)这个方法是将curruser这个对象保存在request作用域中,然后在转发进入的页面就可以获取到你的值,如果你会一些框架的话,那些框架标签也可以获取到,比如struts标签,还有jstl。如果这你都不会的话,那么你可以在jsp页面编写java小脚本来获取:<% User myuser = (User)request.getAttribute(“curruser”)%>,在jsp页面显示值:<%=myuser.getName()%>。
2,session.setAttribute(“curruser”, curruser)。这个方法和上面唯一的区别就是作用域,就是在你整个程序启动的时候,如果在session中保存了数据,那么在你这个无论你在哪个页面,在什么时候都可以获取到这个值,全局的,只要你的这个程序是启动的。session默认的过期时间是30分钟,过期无效,可以去修改这个值。
UserServlet -->userRegist
依次实现service和dao
package cn.itzheng.store.web.servlet;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import cn.itzheng.store.domain.User;
import cn.itzheng.store.service.UserService;
import cn.itzheng.store.service.serviceImpl.UserServiceImpl;
import cn.itzheng.store.utils.MyBeanUtils;
import cn.itzheng.store.utils.UUIDUtils;
import cn.itzheng.store.web.base.BaseServlet;
/**
- Servlet implementation class UserServlet
*/
public class UserServlet extends BaseServlet {
// jsp的method 会统一发现这里的,并发送到父类的service 方法当中
// 先执行父类的init方法和service方法,之后在执行该方法,
// BaseServlet通过this.getclass的方式获取到该类字节码文件名获取到该方法而执行该方法(执行什么方法由jsp页面传入的method来决定)
public String registUI(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
return “/jsp/register.jsp”;
}
// userRegist
public String userRegist(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, Exception {
// 接收业务注册功能
// 遍历map
Map<String, String[]> map = request.getParameterMap();// 获取页面上的键值对数据
User user = new User();
user.setUid(UUIDUtils.getId());
user.setState(0);
user.setCode(UUIDUtils.getCode());
MyBeanUtils.populate(user, map);// 调用MyBeanUtils的populate静态方法
System.out.println(user);
/*
-
// 1_创建时间类型的转换器 DateConverter dt = new DateConverter();//
-
用来设置BeanUtils当中对应的获得时间的格式 // 2_设置转换的格式 dt.setPattern(“yyyy-MM-dd”); //
-
3_注册转换器 ConvertUtils.register(dt, java.util.Date.class);
-
BeanUtils.populate(user, map);//将map当中的数据通过populate放入到user
-
System.out.println(user);
-
Set keySet = map.keySet();// 将map当中的key集合放入到keySet的set集合当中
-
Iterator iterator = keySet.iterator(); while (iterator.hasNext()) {
-
String str = iterator.next();// 获取到每一个key System.out.println(str); String[]
-
strs = map.get(str);// 通过键获取到每一个值 for (String string : strs) {
-
System.out.println(string); } System.out.println();
-
}
*/
// 调用业务注册功能
UserService userservice = new UserServiceImpl();
try {
userservice.userRegist(user);
// 注册注册成功,向用户邮箱发送信息,跳转到提示页面
// 发送邮件
//
request.setAttribute(“msg”, “用户注册成功,请激活”);
} catch (Exception e) {
// 注册失败,跳转到提示页面
request.setAttribute(“msg”, “用户注册失败,请重新注册”);
}
return “/jsp/info.jsp”;
}
}
package cn.itzheng.store.service;
import java.sql.SQLException;
import cn.itzheng.store.domain.User;
public interface UserService {
void userRegist(User user) throws SQLException;
}
package cn.itzheng.store.service.serviceImpl;
import java.sql.SQLException;
import cn.itzheng.store.dao.UserDao;
import cn.itzheng.store.dao.daoImpl.UserDaoImpl;
import cn.itzheng.store.domain.User;
import cn.itzheng.store.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public void userRegist(User user)throws SQLException {
// TODO Auto-generated method stub
// 实现注册功能
UserDao userDao = new UserDaoImpl();
userDao.userRegist(user) ;
}
}
package cn.itzheng.store.dao;
import java.sql.SQLException;
import cn.itzheng.store.domain.User;
public interface UserDao {
最后
既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?
就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。
如果觉得图片不够清晰,也可来找小编分享原件的xmind文档!
且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:
-
出神入化——SpringCloudAlibaba.pdf
-
SpringCloud微服务架构笔记(一).pdf
-
SpringCloud微服务架构笔记(二).pdf
-
SpringCloud微服务架构笔记(三).pdf
-
SpringCloud微服务架构笔记(四).pdf
-
Dubbo框架RPC实现原理.pdf
-
Dubbo最新全面深度解读.pdf
-
Spring Boot学习教程.pdf
-
SpringBoo核心宝典.pdf
-
第一本Docker书-完整版.pdf
-
使用SpringCloud和Docker实战微服务.pdf
-
K8S(kubernetes)学习指南.pdf
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!
是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。
[外链图片转存中…(img-yAunPikN-1714309287173)]
如果觉得图片不够清晰,也可来找小编分享原件的xmind文档!
且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:
-
出神入化——SpringCloudAlibaba.pdf
-
SpringCloud微服务架构笔记(一).pdf
-
SpringCloud微服务架构笔记(二).pdf
-
SpringCloud微服务架构笔记(三).pdf
-
SpringCloud微服务架构笔记(四).pdf
-
Dubbo框架RPC实现原理.pdf
-
Dubbo最新全面深度解读.pdf
-
Spring Boot学习教程.pdf
-
SpringBoo核心宝典.pdf
-
第一本Docker书-完整版.pdf
-
使用SpringCloud和Docker实战微服务.pdf
-
K8S(kubernetes)学习指南.pdf
[外链图片转存中…(img-j2KoOb5x-1714309287174)]
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此!
[外链图片转存中…(img-dpOv1x8i-1714309287174)]