当前位置: 首页 > news >正文

网站怎么做付款平台seo外链是什么

网站怎么做付款平台,seo外链是什么,中介网站怎么做,兰州再次出台9条优化措施转载自:https://www.tianmaying.com/tutorial/jsp-servlet-mvc-architecture JSP与Servlet比较 两种Java服务器端技术——JSP和Servlet,比较二者的不同: Servlet在Java代码中通过HttpServletResponse对象动态输出HTML内容JSP在静态HTML内容…

转载自:https://www.tianmaying.com/tutorial/jsp-servlet-mvc-architecture

JSP与Servlet比较

两种Java服务器端技术——JSP和Servlet,比较二者的不同:

  • Servlet在Java代码中通过HttpServletResponse对象动态输出HTML内容
  • JSP在静态HTML内容中嵌入Java代码,Java代码被动态执行后生成HTML内容

两种技术有着不同的特点,在不同的场景下有着各自的优势:

  • Servlet能够很好地组织业务逻辑代码,但是在Java源文件中通过字符串拼接的方式生成动态HTML内容会导致代码维护困难、可读性差
  • JSP虽然规避了Servlet在生成HTML内容方面的劣势,但是在HTML中混入大量、复杂的业务逻辑同样也是不可取的

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller):

  • Controller——负责转发请求,对请求进行处理
  • View——负责界面显示
  • Model——业务功能编写(例如算法实现)、数据库设计以及数据存取操作实现

在JSP/Servlet开发的软件系统中,这三个部分的描述如下所示:

Clipboard Image.png

  1. Web浏览器发送HTTP请求到服务端,被Controller(Servlet)获取并进行处理(例如参数解析、请求转发)
  2. Controller(Servlet)调用核心业务逻辑——Model部分,获得结果
  3. Controller(Servlet)将逻辑处理结果交给View(JSP),动态输出HTML内容
  4. 动态生成的HTML内容返回到浏览器显示

MVC模式在Web开发中的好处是非常明显,它规避了JSP与Servlet各自的短板,Servlet只负责业务逻辑而不会通过out.append()动态生成HTML代码;JSP中也不会充斥着大量的业务代码。这大大提高了代码的可读性和可维护性。

实现MVC模式

基本原理

所有的HTTP请求都应该由Servlet进行处理,业务逻辑完成后,再调用相应的JSP文件生成HTML内容并返回到浏览器:

/*Bussiness Logic code*///Step 1: get request dispatcher
RequestDispatcher dispatcher = request.getRequestDispatcher("view.jsp");//Step 2: forward req/resp to the specified JSP
dispatcher.forward(request, response);

Servlet API中的RequestDispatcher在这一场景下非常有用,它可以在Servlet中将请求转发(forward)到指定的JSP文件。

从Servlet向JSP中传递数据

通常在Servlet中需要调用业务代码来完成特定的功能并获取结果,同时JSP中动态输出的HTML内容是与这些结果有关的,这就需要将Servlet中的数据传递到JSP中:

request.setAttribute(name, value);

在JSP中可以通过<%= request.getAttribute(name) %>或直接使用EL表达式${name}得到相关的数据。

实例:用户博客列表

用户博客列表页面如下图所示:

Clipboard Image.png

可以看到,上图中动态的内容包括:

  1. 导航栏中的标题Lorem的博客
  2. 文章列表
  3. 文章列表右侧的个人信息——头像、名字、邮箱

Model

用户博客列表页面的业务逻辑就是需要查询某一用户创造的文章列表以及该用户的个人详细信息,我们建立相关的业务对象以及查询方法:

public class Post {private long id;private String title;private String content;private User creator;private Date createdTime;public Post(String title, String content, User creator) {this.title = title;this.content = content;this.creator = creator;this.createdTime = new Date();}//Getter与Setter方法省略
}
public class User {private long id;private String username;private String password;private String avatar;private String title;private String email;public User(long id, String username, String password, String avatar, String title, String email) {this.id = id;this.username = username;this.password = password;this.avatar = avatar;this.title = title;this.email = email;}//Getter与Setter方法省略
}

我们用Data类以及它包含的静态变量来存储用户以及博客列表:

public class Data {public static List<User> users = new ArrayList<>();public static List<Post> posts = new ArrayList<>();static {users.add(new User(1L, "user1", "password", "images/default-avatar.jpeg", "title1", "description1"));users.add(new User(2L, "user2", "password", "images/default-avatar.jpeg", "title2", "description2"));users.add(new User(3L, "user3", "password", "images/default-avatar.jpeg", "title3", "description3"));}public static User getByUsername(String username) {return users.stream().filter(e -> e.getUsername().equals(username)).findFirst().orElse(null);}public static List<Post> getPostByUser(User user) {return posts.stream().filter(p -> p.getCreator().getUsername().equals(user.getUsername())).collect(Collectors.toList());}}

这里初始化添加了三个测试用户,用户名分别为user1user2user3,同时包含一个根据用户名查找对应User对象的方法getByUsername,以及一个根据User对象找出它创建的所有Post对象的方法。

Controller

Controller由Servlet实现,它负责获取用户的输入(也就是用户名),并调用业务逻辑方法获取相关数据,然后将请求分发至指定JSP进行处理:

@WebServlet("/userPosts")
public class UserPostController extends HttpServlet {private static final long serialVersionUID = -4208401453412759851L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");User user = Data.getByUsername(username);List<Post> posts = Data.getPostByUser(user);req.setAttribute("posts", posts);req.setAttribute("user", user);RequestDispatcher dispatcher = req.getRequestDispatcher("/templates/userPost.jsp");dispatcher.forward(req, resp);}}

View

在JSP中,就可以通过request.getAttribute("posts")request.getAttribute("user")来访问Servlet中传递来的数据了(这里只包含核心渲染逻辑代码)

<% for (Post post : request.getAttribute("posts")) { %><div class="blog-post"><h3 class="blog-post-title"><a href="#"><%= post.getTitle() %></a></h3><p class="blog-post-content"><%= post.getContent() %></p></div><hr/>
<% } %>

版权声明

本文由Ricky创作,转载需署名作者且注明文章出处

 

 

http://www.lbrq.cn/news/2584441.html

相关文章:

  • 做网站平台近期网络舆情事件热点分析
  • 石景山建网站百度营销登录
  • 双11主机 wordpress 2015seo排名
  • 网站制作 flash 修改网络推广优化工具
  • 网站建设做网站怎么做百度推广代理商加盟
  • 黑龙江生产建设兵团各连网站站长号
  • 网站建设 佛山市建立网站的步骤
  • 沉默是金歌词南京seo新浪
  • 学做陶艺作品的网站某个产品营销推广方案
  • 页面设计理念怎么写seo推广优化的方法
  • 黄山网站建设费用网络营销个人感悟小结
  • 常见的网站类型有哪些软文范例大全500
  • 个人备案可以做门户网站吗seo优化排名公司
  • 泰州网站建设案例友情链接是啥意思
  • 仿做网站google学术搜索
  • 如何知道网站是用什么语言做的推广一次多少钱
  • 网站建设登录页面怎么写重庆做网络优化公司电话
  • 可信网站身份认证百度关键词收录排名
  • 哪些网站做的最好百度电脑版官网
  • 网站建设好后如何提交搜索引擎济南seo的排名优化
  • 手表哪个网站做的好中国数据统计网站
  • 怎样做可以互动留言的网站免费发布信息
  • 快速做网站公司报价海外市场推广方案
  • 成都网站建设哪家好友情链接是什么意思
  • 自己家的电脑宽带50m做网站服务器2024年疫情还会封控吗
  • 新疆建设兵团二师网站网页生成
  • 常州网站建设市场百度推广账号怎么申请
  • 做网站需要的公司油烟机seo关键词
  • 网站做电话线用国际新闻快报
  • 广州市从化区住房和建设据网站seo关键词优化
  • 当Windows远程桌面出现“身份验证错误。要求的函数不受支持”的问题
  • 研报复现|史蒂夫·路佛价值选股法则
  • WSUS服务器数据库维护与性能优化技术白皮书
  • [硬件电路-143]:模拟电路 - 开关电源与线性稳压电源的详细比较
  • JAVA国际版同城服务同城信息同城任务发布平台APP源码Android + IOS
  • Oracle 11g RAC集群部署手册(三)