Servlet:从入门到实战学习(3)—Servlet实例【图文】

phpcms v9模板制作教程(转载)

第一节

1、首先下载phpcms v9的合并安装包并安装,这里虽无详细表明了。

2、本地调试指出我们以APMserver,或者wampserver等,可以到PHPCMS吧官方网站首页链接下载。安装好打开v9的清目录“phproot→phpcms→templates”文件夹把“default”文件夹复制一卖起名“redu”。

3、登陆v9后高登录地址:http://localhost/admin.php
用户名:phpcms 密码:phpcms

4、打开界面→模板风格→风格标识redu下的详尽列表下之content文件夹

1、首先修改首页模板index.html
修改前为我们介绍下v9的干活形式,v9和他的前身phpcms
2008凡是一律的都是“标签调用头部 +首页有+ 标签调用底”
于是依照从头开首的依次
率先步打开heard.html
今昔我们开分析header.html的结构:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
点是W3C网页标准
<head>
<meta http-equiv=”Content-Type” content=”text/html;
charset={CHARSET}” />{CHARSET}” =字符集 (gbk或者utf-8)
<meta http-equiv=”X-UA-Compatible” content=”IE=7″ />
<title>{if isset($SEO[‘title’]) &&
!empty($SEO[‘title’])}{$SEO[‘title’]}{/if}{$SEO[‘site_title’]}</title>
看清语句
翻译:假诺设置了标题并且标题不为空,则显得标题,否则显示网站称

<meta name=”keywords” content=”{$SEO[‘keyword’]}”>
<meta name=”description” content=”{$SEO[‘description’]}”>
<link href=”{CSS_PATH}reset.css” rel=”stylesheet” type=”text/css”
/>
<link href=”{CSS_PATH}default_blue.css” rel=”stylesheet”
type=”text/css” />
地点2行凡表面css的调用{CSS_PATH}
<script type=”text/javascript”
src=”{JS_PATH}jquery.min.js”></script>
<script type=”text/javascript”
src=”{JS_PATH}jquery.sGallery.js”></script>
<script type=”text/javascript”
src=”{JS_PATH}search_common.js”></script>
方3行是网页的js调用
</head>
<body>
<div class=”body-top”>
<div class=”content”>
{pc:content action=”position” posid=”9″ order=”id” num=”10″
cache=”3600″}
<div id=”announ”>
<ul>
{loop $data $k $v}
<li><a
href=”{$v[url]}”>{$v[title]}</a></li>
{/loop}
</ul>
</div>
{/pc}
<script type=”text/javascript”>
$(function(){
startmarquee(‘announ’,22,1,500,3000);
})
</script>
<div class=”login lh24 blue”><a
href=”{APP_PATH}index.php?m=content&c=rss&siteid={get_siteid()}”
class=”rss ib”>rss</a><span class=”rt”><script
type=”text/javascript”>document.write(‘<iframe
src=”{APP_PATH}index.php?m=member&c=index&a=mini&forward=’+encodeURIComponent(location.href)+’&siteid={get_siteid()}”
allowTransparency=”true” width=”300″ height=”24″ frameborder=”0″
scrolling=”no”></iframe>’)</script></span></div>
</div>
</div>
<div class=”header”>
<div class=”logo”><a href=”/”><img
src=”{IMG_PATH}v9/logo.jpg” /></a></div>

下边是寻找部分

<div class=”search”>
<div class=”tab” id=”search”>
{php $j=0}
{php $search_model = getcache(‘search_model_’.$siteid, ‘search’);}
{loop $search_model $k=>$v}
{php $j++;}
<a href=”javascript:;” style=”outline:medium none;” hidefocus=”true”
{if $j==1 && $typeid=$v[‘typeid’]} class=”on”
{/if}>{$v[‘name’]}</a>{if $j !=
count($search_model)}<span> | </span>{/if}
{/loop}
{php unset($j);}
</div> <div class=”bd”>
<form action=”{APP_PATH}index.php” method=”get”
target=”_blank”>
<input type=”hidden” name=”m” value=”search”/>
<input type=”hidden” name=”c” value=”index”/>
<input type=”hidden” name=”a” value=”init”/>
<input type=”hidden” name=”typeid” value=”{$typeid}”
id=”typeid”/>
<input type=”hidden” name=”siteid” value=”{$siteid}”
id=”siteid”/>
<input type=”text” class=”text” name=”q” id=”q”/><input
type=”submit” value=”搜 索” class=”button” />
</form>
</div>
</div>

寻部分了结
<div class=”banner”><script language=”javascript”
src=”{APP_PATH}index.php?m=poster&c=index&a=show_poster&id=1″></script></div>
<div class=”bk3″></div>
<div class=”nav-bar”>
<map>
{pc:content action=”category” catid=”0″ num=”25″ siteid=”$siteid”
order=”listorder ASC”}
<ul class=”nav-site”>
<li><a
href=”{siteurl($siteid)}”><span>首页</span></a></li>
{loop $data $r}
<li class=”line”>|</li>
<li><a
href=”{$r[url]}”><span>{$r[catname]}</span></a></li>
{/loop}
</ul>
{/pc}
</map>
</div>
{if $top_parentid}
<div class=”subnav”>
{pc:content action=”category” catid=”$top_parentid” num=”15″
siteid=”$siteid” order=”listorder ASC”}
{loop $data $r}
<a href=”{$r[url]}”>{$r[catname]}</a><span> |
</span>
{/loop}
{/pc}
{if $modelid}<a
href=”{APP_PATH}index.php?m=content&c=search&catid={$catid}”>搜索</a>{/if}
</div>
{/if}
</div>

提出下充斥个opera浏览器 他的检讨页面元素功效超赞!

{template “content”,”header”}

调用根目录下phpcms/template/content/header文件
<!–main–>那些是模版注释!提出一定如果养成写代码加注的惯

这多少个是div标签,不晓得呀是div可以的失去网上查找几教程学习下,这么些都非了解就无必要继续看了

<!–这里是pc标签{pc:content 参数名=”参数值” 参数名=”参数值”
参数名=”参数值”}–>
{pc:content action=”position” posid=”2″ order=”listorder DESC”
num=”4″}

<!–展现PC标签中之多少–>

{loop $data $r}

{str_cut($r[title],36)}

{if $n==1}{/if}{str_cut($r[description],112)}

{/loop}
{/pc}

<!–结束标签–>

 

<!–这里要pc标签–>
{pc:content action=”position” posid=”1″ order=”listorder DESC” thumb=”1″
num=”5″}

{loop $data $r}

{/loop}

{/pc}

 

推广

{pc:block pos=”index_block_1″}

{/pc}

 

图片音信
{pc:content action=”position” posid=”12″ thumb=”1″ order=”id DESC”
num=”10″}

{loop $data $r}

{str_cut($r[title],20)}

{/loop}

{/pc}

 

{loop subcat(0,0,0,$siteid) $r}
{php $num++}

 

{$r[catname]}更多>>

{pc:content action=”lists” catid=”$r[catid]” num=”1″ thumb=”1″
order=”id DESC” return=”info”}
{loop $info $v}

 

{str_cut($v[‘title’],28)}
{str_cut($v[‘description’],100)}

{/loop}
{/pc}

{pc:content action=”lists” catid=”$r[catid]” num=”5″ order=”id DESC”
return=”info”}

 

{loop $info $v}

·{str_cut($v[‘title’],40)}
{/loop}

{/pc}

{if $num%2==0}
{/if}
{/loop}

 

公告

{pc:announce action=”lists” siteid=”$siteid” num=”2″}

{loop $data $r}

{$r[‘title’]}
{/loop}

{/pc}

 

 

专题更多>>

{pc:special action=”lists” siteid=”$siteid” elite=”1″ listorder=”3″
num=”2″}
{loop $data $r}
{if $n!=1}
{/if}

 

{str_cut($r[title],’18’)}
{str_cut($r[‘description’],50)}

{/loop}
{/pc}

 

 

看好 | 评论 | 关注排名

 

{pc:content action=”hits” catid=”35″ num=”10″ order=”views DESC”}
{loop $data $r}

{$r[title]}
{/loop}
{/pc}

 

{pc:comment action=”bang” num=”10″ cache=”3600″}
{loop $data $r}

{$r[title]}
{/loop}
{/pc}

 

{pc:content action=”hits” catid=”35″ num=”10″ order=”views DESC”}
{loop $data $r}

{$r[title]}
{/loop}
{/pc}

 

 

 

调研问卷更多>>

 

 

 

复多>>友情链接申请链接

 

{pc:link action=”type_list” siteid=”$siteid” linktype=”1″
order=”listorder DESC” num=”8″ return=”pic_link”}
{loop $pic_link $v}

{/loop}
{/pc}

{pc:link action=”type_list” siteid=”$siteid” order=”listorder DESC”
num=”10″ return=”dat”}

 

{loop $dat $v}
{if $type==0}
{$v[name]} |
{else}

{/if}
{/loop}

{/pc}

 

$(function(){
new slide(“#main-slide”,”cur”,310,260,1);//焦点图
new SwapTab(“.SwapTab”,”span”,”.tab-content”,”ul”,”fb”);//排行TAB
})

{template “content”,”footer”}

养成书写规范之DIV标签

探寻引擎优化(seo)中,对代码的优化也是一个要命首要之步调。为了进一步吻合SEO的科班,下边是当前盛行的CSS+DIV的命名规则:
DIV ID命名
页头:header
登录条:loginBar
标志:logo
侧栏:sideBar
广告:banner
导航:nav
子导航:subNav
菜单:menu
子菜单:subMenu
搜索:search
滚动:scroll
页面主体:main
内容:content
标签页:tab
小说列表:list
提醒消息:msg
小技巧:tips
栏目标题:title
友情链接:friendLink
页脚:footer
加入:joinus
指南:guild
服务:service
热点:hot
新闻:news
下载:download
注册:regsiter
状态:status
按钮:btn
投票:vote
合作伙伴:partner
版权:copyRight
CSS ID的命名
外套:wrap
主导航:mainNav(globalNav)
子导航:subNav
页脚:footer
一切页面:content
页眉:header
页脚:footer
商标:label
标题:title

顶导航:topNav
边导航:sideBar
左导航:leftsideBar
右导航:rightsideBar
标识:logo
标语:banner
菜单1内容:menu1Content
菜单1容量:menu1Container
子菜单:submenu
止导航图标:sidebarIcon
注释:note
面包屑:breadCrumb(即页面所处地方导航提醒)
容器:container
内容:content
搜索:search
登陆:login
功用区:shop(如购物车,收银台)
当前的current
体制文件命名
全站标签默认样式:general.css或global.css
布局版式设计样式:layout.css或container.css
通用样式(如字、表单等):style.css
专栏/频道样式:columns.css
打印输出样式:print.css
主旨模板样式:themes.css

争以v9仿制一个网站
同等、准备工具1、
css手册
2、phpcms手册
3、dw cs5 没有底得用记事本
4、ps
5、屏幕尺子
6、好色鬼
7、网站下载器
8、各类浏览器 ie6 ie7 ie8 ie9 火狐 Google Opera Safari 用ie
和火狐基本就是够用了
9、有规范的足准备只php手册和html手册
10、亦歌(这一个大好用的丢弃歌软件,我老是写代码都碰面打开他听歌)
11、测试环境没有下只phpcm v9的集成包
12、还不曾想到······想到了以形容(呵呵,为了多写点·····哈)
其次、准备资料
1、用网站下载器下载准备学的网站文件
2、遵照目的网站做相应尺寸的图纸(如logo)有些要变更,有些不欲转移(这里为是为多写点···)

3、还一向不悟出还索要预备什么······想到了当形容(呵呵,仍旧为了多写点·····哈)
其三、起先仿站
1、先打开也歌听音乐吧
2、打开需要效法的立,查看页面源代码!(在网页空白区右建就能看)
3、先找到网页的css文件(下载下来放到根目录\statics\css下化名reset.css)为啥这样做<link
href=”{CSS_PATH}reset.css” rel=”stylesheet” type=”text/css” />
{CSS_PATH}reset.css等于根目录\statics\css下reset.css文件(若是就此网站下载器下载了那在下载文件里找到css文件复制过去碰面再方便)
流淌:statics目录下的文本部分是属于后台模版的,所以提出新建个目录放入你协调写好之css、js或者图片文件{CSS_PATH}reset.css是后台的css代码,这里决别改!改了后台就飞偏了
4、编辑头部文件用dwcs 5或记事本打开v9模版目录下header.html文件。

图片 1

空闲了重新。要大忙一段时间。有问题留言

7.布置好未来,新建我们的Servlet,选中Servlet文件夹-> 右键-> new
->Servlet,我之命名吧:Servlet 和文书夹名保持一致。

9.此我们而失去团结的MYSQL里创立Database和User,工具也MYSQL Workbench
或者Sequel Pro,建立了晚只是于IDEA里点Test
Connection测试是否能成连接。
IDEA里好连续不断了数据库后实现建表和增长数据,点开IDEA里的控制界面执行建表以及数额插入语句:

8.IDEA里打带简单的数据库管理工具,在视图的可是右边能够找到,Database,这里我们采用上加
Data Sourse -> MySQL 

4.进后点击左上角+号(注意不要选用default),添加 tomcat
 server->local ,配置
修改name,我这里转以tomcat;然后Deployment里好加个war包,点击OK

图片 2

图片 3

图片 4

连接下去相比较忙,所以先简单提一下贯彻原理:大家曾学会了什么样立一个Servlet,当大家在阿里云/腾讯云上买一个服务器未来,在服务器上搭配和大家刚刚本地同的配置环境,并且将转变的Servlet实例放到服务器上举办部署后,这我们还起首协调之手机/电脑就足以输入:123.456.7.8(服务器地址)/api/servlet/test
(自己定义的Servlet匹配地址),和大家地点访问不同易了个ip地址而已。这样即便放到服务器上哪,同样的数据库建立到服务器上,这样看的输入一个上述的URL地址访问的哪怕是服务器的数据。这样我们绝挂念领会的后端连接前端的效用就已实现啊。

图片 5

迄今,一个会成总是至数据库的Servlet的Demo已经主导形成,下篇介绍咋样以Servlet搭建筑及服务器上,实现和app/web的现实性交互。

图片 6 

图片 7

2.摘Project
SDK(自己作的JDK版本,系统并未提示的口舌自己选JDK目录),下单界面友好挑选工程存储目录及工程称为,我自从名叫吧DemoServlet

代码附上

3.精通了文件目录,大家累向下安排,菜单栏 ->run -> Edit
Configurations 下展开布局

CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'),
  ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'),
  ('4', '微博', 'http://weibo.com/', '20', 'CN'),
  ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

11.这边大家当web.xml里安排Servlet的mapping,就是布Servlet的前端路径,这样我们可以于浏览器里输入
localhost:8080/test来访问查看

 

 

 

 

 

图片 8

12.一个Servlet基本写了了,那里我们运行project,打开浏览器输入localhost:8080/test来查看是否Servlet建立成,并且成功连接到数据库,输出结果如下。

本篇通过图文实例给我们详细描述怎么着树立一个Servlet,配置好运行环境并遂总是至MYSQL的数据库,实行数量的查询展现。

图片 9

http://download.csdn.net/detail/oyuntaolianwu/5822697

 

1.档开创:IDEA -> Create New Project

图片 10

图片 11

5.布置好将来,采纳菜单栏->file->project structure
,来填补加有咱得之保险

10.数据库的表和数据建好后,大家编辑Servlet,写一个简易连接自己立之mysql库里的一个表明的例子,

图片 12

图片 13

 

 

 

 

图片 14

 

 

注意:一定要悬赏Export,不然可能会面报错连接不达数据库

 

package Servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.io.*;

/**
 * Created by weber on 2017/4/20.
 */
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    // JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false";

    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "weber";
    static final String PASS = "123456";
    protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        doGet(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

        Connection conn = null;
        Statement stmt = null;
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String title = "Servlet Mysql 测试";
        String docType = "<!DOCTYPE html>\n";
        out.println(docType +
                "<html>\n" +
                "<head><title>" + title + "</title></head>\n" +
                "<body bgcolor=\"#f0f0f0\">\n" +
                "<h1 align=\"center\">" + title + "</h1>\n");

        try{
            // 注册 JDBC 驱动器
            Class.forName(JDBC_DRIVER);

            // 打开一个连接
            conn = DriverManager.getConnection(DB_URL,USER,PASS);

            // 执行 SQL 查询
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites " ;
            ResultSet rs = stmt.executeQuery(sql);

            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");

                // 输出数据
                out.println("ID: " + id);
                out.println(", 站点名称: " + name);
                out.println(", 站点 URL: " + url);
                out.println("<br />");
            }
            out.println("</body></html>");

            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        } catch(SQLException se) {
            // 处理 JDBC 错误
            se.printStackTrace();
        } catch(Exception e) {
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 最后是用于关闭资源的块
            try{
                if(stmt!=null)
                    stmt.close();
            }catch(SQLException se2){
            }
            try{
                if(conn!=null)
                    conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }

    }
}

6.增选Modules-> Dependencies 点击下边+号 添加
如图所示的几乎单保险,第一只(含jsp-api同servlet-api)可以于
tomcat的解压文件夹的\lib里导入,第二只大家可错过下充斥下,是接连mysql的担保,附上下载地址:

图片 15

 

有关具体拔取Servlet来展开具体app/web的劳务,实际上是由此JSON传输的,意思就是是真正的doGet会赢得有多少(不像咱刚刚写的demo没写传来的数目),得到这个数量之后经过同多元处理(比如调用哪个数据库的什么样数据等等),获取要传的多少,通过树立成JSON格式的往往组,这样app端访问是URL之后虽会取得她需要的JSON数据(比如imgURL,imgNAME等等)用于app端/web端的操作以。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图