Table des matières
JDK+Tomcat+ MyEclipse开发环境搭建
JDK下载安装
Tomcat下载安装
MyEclipse下载安装并配置
web测试环境
登录实例(SSH框架+bootstrap 3)
数据库准备(选择mysql)
MyEclipse配置SSH框架
Bootstrap设计登录页面
“form-signin-heading” > 用户登录
完成登录验证逻辑功能
登录实例(SSH框架+bootstrap 3+DWR+AJAX)
DWR环境准备
DWR实例测试
Maison interface Web tutoriel HTML Java+SSH+Bootstrap开发笔记_html/css_WEB-ITnose

Java+SSH+Bootstrap开发笔记_html/css_WEB-ITnose

Jun 21, 2016 am 08:54 AM

JDK+Tomcat+ MyEclipse开发环境搭建

JDK下载安装

( 1 )下载 JDK 对应版本,双击安装 JDK ,选择安装路径,安装完毕继续安装 JRE ,修改安装路径,安装完毕配置环境变量。计算机 → 属性 → 高级系统设置 → 高级 → 环境变量。

( 2 )系统变量 → 新建 JAVA_HOME 变量 。变量值填写 jdk 的安装目录(到安装目录查看属性复制即可,我的是 D:\Program Files\Java\jdk1.8.0_72) 。

( 3 )系统变量 → 寻找 Path 变量 → 编辑

在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (注意原来 Path 的变量值末尾有没有 ; 号,如果没有,先输入 ; 号再输入上面的代码)

( 4 )系统变量→新建 CLASSPATH 变量

变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)

系统变量配置完毕。

( 5 )检验是否配置成功 运行 cmd 输入 java -version ( java 和 -version 之间有空格),若如图所示 显示版本信息 则说明安装和配置成功。

Tomcat下载安装

(1)下载tomcat对应版本,这里下载apache-tomcat-8.0.32-windows-x64.zip免安装版,直接解压到需要的目录即可。

(2)配置CATALINA_HOME环境变量, 计算机 → 属性 → 高级系统设置 → 高级 → 环境变量。系统变量 → 新建 CATALINA_HOME,变量值输入tomcat安装根目录,如我的是D:\Program Files\apache-tomcat-8.0.32。

(3)测试tomcat配置是否成功(依赖之前JDK环境变量配置) 进入tomcat安装目录,进入bin文件夹, 运行 cmd 窗口,拖入 startup.bat 执行命令,此时跳出 tomcat 服务器运行 dos 界面,打开浏览器,输入 http://localhost:8080/ 显示如下便是配置成功。

MyEclipse下载安装并配置

(1)下载myeclipse对应版本(我是myeclipse-pro-2014-GA-offline-installer-windows.exe),选择安装路径安装即可。安装完毕破解教程进行破解。

(2)打开myeclipse,选择window → preferences →Java→Installed JREs→Add→Standard VM→Next→directory 选择 JDK 安装目录,我的是 D:\Program Files\Java\jdk1.8.0_72 ,点击 finish ,选择新添加的 JDK ,点击 OK 退出,

( 3 )选择 window → preferences →MyEclipse→services→tomcat→ 选择 tomcat 版本 ( 我的是 tomcat 8.x) → 点击 Enable→browsetomcathome 目录(我的是 D:\Program Files\apache-tomcat-8.0.32 ),展开 tomcat 8.x→ 选择 JDK→ 选择刚添加的 JDK VM (我的是 jdk1.8.0_72 )

配置成功。

web测试环境

(1)打开myeclipse,File →New→Web Project ,输入工程名 test ,点击 finish 新建一个 web 工程。

(2)右键工程名 →Run As→ MyEclipse server application ,选择 Tomcat 8.x ,点击 OK ,将 web 工程发布到 tomcat 服务器中。

( 3 )打开浏览器,输入 http://localhost:8080/test/ ,显示如下则配置环境成功。

登录实例(SSH框架+bootstrap 3)

数据库准备(选择mysql)

(1)安装数据库环境,下载合适的mysql,这里用mysql-5.6.22-winx64.msi,安装,配置(默认编码选择utf-8,兼容中文)数据库密码即可。

(2)添加连接数据库驱动,下载mysql的java的jdbc驱动程序,我用的是mysql-connector-java-5.1.34-bin.jar,运行MyEclipse打开数据库视图,如图:

对DB Browser右键,新建数据库连接驱动,选择驱动模块为mysql connector/J,输入驱动名字,连接url(注意连接编码集,我的数据库用utf-8编码,工程也是utf-8,设置为jdbc:mysql://localhost:3306/cls_anal?useUnicode=true&characterEncoding=utf-8),mysql登录名和密码,Add JARs添加jdbc库,Driver classname选择com.mysql.jdbc.Driver,选择保存密码,点击Test Driver测试通过即可点击finish完成,如图:

(3)打开mysql驱动连接到数据库中,右键新建一个数据库login,数据库字符编码选择utf-8,展开数据库,新建表userinfo,添加字段userid(主键,自动递增),username,userpass。新建一个sql视图插入一行数据到表中。

切换到工程视图(右上角 选择视图即可)。

MyEclipse配置SSH框架

  1. 新建web project工程,名字为login。

  1. 加入 Struts 支持,右键项目 →MyEclipse→ project facts → 选择安装 struts 1.x ,弹出界面选择下一步,点击 finish 。

  1. 加入Spring支持,右键项目 →MyEclipse→ project facts → 选择安装 Spring ,弹出界面选中下一步,然后将 applicationContext.xml 选择放在 WebRoot/WEB-INF 目录中,点击 finish 。

  1. 加入Hibernate支持,右键项目 →MyEclipse→ project facts → 选择安装 Hibernate ,弹出界面选中下一步,然后将 的勾去掉,下一步,在 DB Driver 选择之前建好的数据库驱动 mysql ,然后点击 finish 。

查看 applicationContext.xml 配置文件,确保数据库驱动配置正确(因为自动生成的一般不正确),如下所示, driverClassName (有些自动生成是不对的), url (记得加上编码集为 utf-8 ,因为我的数据库是 utf-8 的,前台转到后台的 spring 过滤器也是 utf-8 的), username , password 配置正确。

class = “org.apache.commons.dbcp.BasicDataSource” >

value = “com.mysql.jdbc.Driver” >

property >

value = “jdbc:mysql://localhost:3306/cls_anal?useUnicode=true&characterEncoding=utf-8″ >

property >

property >

property >

bean >

(5)在struts-config.xml的前加入下面配置(覆盖 message-resources ),(这里使用spring管理struts的action)。

processorClass=”org.springframework.web.struts.DelegatingRequestProcessor”>

login.struts.ApplicationResources” />

value=”/WEB-INF/applicationContext.xml” />

( 6 )打开 web.xml 在 前加入如下代码 配置请求编码(使用 spring转换器,编码为utf-8)(这样统一使用utf-8,中文存储到数据库就不会出现乱码了) :

encodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

encodingFilter

/*

Bootstrap设计登录页面

  1. 复制编译版的bootstrap整个文件夹到工程WebRoot下,如图:

  1. 在WebRoot新建login.jsp文件。使用bootstrap登录组件,login.jsp代码如下:

page language=”java” import=”java.util.*” pageEncoding=”utf-8″ %>

String path = request.getContextPath ();

String basePath = request.getScheme ()+ “://” + request.getServerName ()+ “:” + request.getServerPort ()+ path + “/” ;

%>

“en” >

“utf-8″ >

“X-UA-Compatible” content = “IE=edge” >

“viewport” content = “width=device-width, initial-scale=1″ >

“description” content = 登录界面 >

“author” content = “jly” >

“icon” href = “../../favicon.ico” >

<strong>登录界面</strong>

“bootstrap/css/bootstrap.min.css” rel = “stylesheet” >

“css/signin.css” rel = “stylesheet” >

“container” >

“form-signin” >

“form-signin-heading” > 用户登录

“text” id = “inputUser” class = “form-control” placeholder = 用户名 required autofocus >

“password” id = “inputPassword” class = “form-control” placeholder = 密码 required >

“checkbox” >

“checkbox” value = “remember-me” > 记住我

  1. 在WebRoot下新建文件夹css,在文件夹css下新建login.css样式文件,文件内容如下:

body {

padding-top : 40px;

padding-bottom : 40px;

background-color : #eee;

}

. form-signin {

max-width : 330px;

padding : 15px;

margin : 0 auto;

}

. form-signin . form-signin-heading ,

. form-signin . checkbox {

margin-bottom : 10px;

}

. form-signin . checkbox {

font-weight : normal;

}

. form-signin . form-control {

position : relative;

height : auto;

-webkit-box-sizing : border-box;

-moz-box-sizing : border-box;

box-sizing : border-box;

padding : 10px;

font-size : 16px;

}

. form-signin . form-control : focus {

z-index : 2;

}

. form-signin input [ type=”email” ] {

margin-bottom : -1px;

border-bottom-right-radius : 0;

border-bottom-left-radius : 0;

}

. form-signin input [ type=”password” ] {

margin-bottom : 10px;

border-top-left-radius : 0;

border-top-right-radius : 0;

}

  1. 运行login工程到服务器上,在浏览器输入 http://localhost:8080/login/login.jsp ,显示如下:

完成登录验证逻辑功能

  1. 在工程文件夹src下新建包 com.pojo(实体层) 和 com.dao(持久层),切换到MyEclipse Database Explorer视图打开login数据库的userinfo表,右键选择Hibernate reverse engineering弹出界面,src文件夹选择login/src,包选择com.pojo,选择需要生成的项,点击下一步将id generator设置为native(根据数据库决定是什么就是什么,一般自动编号可以选择native,如果主键是自己确定则选择assigned),点击finish,如图所示:

将生成的UserinfoDao.java拖入com.dao包中,如图:

  1. 新建 com.service包,包下新建类UserinfoService.java封装持久化操作,代码如下:

package com . service ;

com . pojo . Userinfo ;

import com . dao . UserinfoDAO ;

public class UserinfoService {

// 依赖注入 UserinfoDAO 要设置 spring 配置文件 applicationContext.xml

private UserinfoDAO userinfoDAO ;

public UserinfoDAO getUserinfoDAO () {

return userinfoDAO ;

}

public void setUserinfoDAO ( UserinfoDAO userinfoDAO ) {

this . userinfoDAO = userinfoDAO ;

}

// 判断登录

public boolean Login ( Userinfo user )

{

if ( userinfoDAO .findByExample(user).size()>0)

return true ;

return false ;

}

}

  1. 新建 action和actionForm,右键->New->Other->MyEclipse->Web Struts 1.x->Struts Form,Action&Jsp->Next弹出界面配置Form,输入Use case为userinfo,添加Form Properties,添加用户名username,用户密码userpass(实例属性,对应视图层表单的name,这里对应登录界面jsp表单的用户名和用户密码,这样客户端才能通过struts实例化这个formbean),如图:

点击下一步,配置Action,superclass继承选择org.apache.struts.actions.DispatchAction(即一个action可以对应很多方法动作);input source选择login.jsp(提交表单数据的页面);选择parameter选项,设置参数为method(这里随意,到时调用action的某个函数动作要由它指定);选择Forward选项,点击添加几个Forwards(用于表单提交动作之后逻辑处理后可以进行相关的跳转),然后点击finish即可,如图:

此时生成了Action和Form类,Form作为视图层实例化的Bean,变量需要对应视图层输入jsp的表单元素的属性名与ID,Action作为动作反应,是逻辑处理层对视图层的submit逻辑处理。

对生成的UserinfoAction.java修改逻辑处理(覆盖 execute 函数 增加 Loginexecute 函数 ),修改后代码如下:

package com . struts ;

import javax . servlet . http . HttpServletRequest ;

import javax . servlet . http . HttpServletResponse ;

import org . apache . struts . action . Action ;

import org . apache . struts . action . ActionForm ;

import org . apache . struts . action . ActionForward ;

import org . apache . struts . action . ActionMapping ;

import com . service . UserinfoService ;

import com . pojo . Userinfo ;

//DispatchAction 允许同一个 action 多个函数用于动作反应

public class UserinfoAction extends DispatchAction {

依赖注入 UserinfoService 要设置 spring 配置文件 applicationContext.xml

private UserinfoService userinfoService ;

public UserinfoService getUserinfoService () {

return userinfoService ;

}

public void setUserinfoService ( UserinfoService userinfoService ) {

this . userinfoService = userinfoService ;

}

public ActionForward Loginexecute ( ActionMapping mapping , ActionForm form ,

HttpServletRequest request , HttpServletResponse response ) {

UserinfoActionForm userinfoActionForm = ( UserinfoActionForm ) form ; // TODO Auto-generated method stub

Userinfo user = new Userinfo ();

user . setUsername ( userinfoActionForm . getUsername ());

user . setUserpass ( userinfoActionForm . getUserpass ());

// 如果用户名和密码输入正确登录成功

if ( userinfoService . Login ( user ))

{

return mapping . findForward ( “success” );

}

else

{

return mapping . findForward ( “error” );

}

}

}

  1. 由于 UserinfoAction.java 和 UserinfoService.java 采用了 spring 相关依赖注入技术,因此在 spring 配置文件 applicationContext.xml 的 前加入下面配置。

依赖注入 –>

这里标红那里要对应 struts-config.xml相应的action的path=”/userinfo”,此为action的名字,视图层可以调用这个动作,并struts通过spring来进行执行(这里使用spring管理struts的action)。

  1. 修改视图层的login.jsp将用户名和密码输入表单的id和name设置映射为对应UserinfoForm的变量名。

修改form表单action为

  1. 工程部署到服务器上,打开浏览器,输入 http://localhost:8080/login/login.jsp ,进行测试,输入正确用户密码时:

登录实例(SSH框架+bootstrap 3+DWR+AJAX)

DWR环境准备

(1)下载dwr环境包,这里用dwr3.x.jar,将dwr.jar复制到前面工程的WebRoot/WEB-INF/lib下。

(2)配置 web.xml 文件。在 web.xml 的前 加 入如下代码,进行 DWR 框架配置。

dwr-invoker org.directwebremoting.servlet.DwrServlet debug true

dwr-invoker /dwr/*

(3)在web.xml同目录下新建dwr.xml(根据dwr1.x 2.x还是3.x配置)文件。配置如下:

-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN”

“http://www.getahead.ltd.uk/dwr/dwr20.dtd”>

DWR实例测试

  1. 在UserinfoAction.java类中添加函数如下:

/ / 通过传入的用户密码判断登录 返回信息

public String signin(String username,String userpass)

{

String mess= “error” ;

Userinfo user= new Userinfo(username,userpass);

System. out .println( “55″ );

if ( userinfoService .Login(user))

mess= “success” ;

return mess;

}

  1. 配置dwr.xml文件。将 signin 方法配置到dwr.xml中,使其可以访问。

xml version=”1.0″ encoding=”UTF-8″?>

-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN”

“http://www.getahead.ltd.uk/dwr/dwr20.dtd”>

  1. 在前台视图login.jsp文件的

    标签之间加入下面:

script >

script >

script >

其次,编写登陆按钮的提交事件,事件名称是onValidation();具体实现代码如下(

标签之间):

    function onValidation()

{

signin.signin(document.getElementById( “username” ).value,document.getElementById( “userpass” ).value,signinCallback);

}

function signinCallback(data){

if (data== “error” ) alert( “ 用户或密码错误 “ );

else if (data== “success” ) window.location.href= “success.jsp” ;

}

script >

将登录按钮添加onclick属性为 onClick=”onValidation()”,type 属性改为 type=”button” 。

(4) 运行工程,打开浏览器,输入用户密码验证:

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Difficulté à mettre à jour la mise en cache des pages Web officielles du compte: comment éviter l'ancien cache affectant l'expérience utilisateur après la mise à jour de la version? Difficulté à mettre à jour la mise en cache des pages Web officielles du compte: comment éviter l'ancien cache affectant l'expérience utilisateur après la mise à jour de la version? Mar 04, 2025 pm 12:32 PM

Le cache de mise à jour de la page Web du compte officiel, cette chose est simple et simple, et elle est suffisamment compliquée pour en boire un pot. Vous avez travaillé dur pour mettre à jour l'article officiel du compte, mais l'utilisateur a toujours ouvert l'ancienne version. Dans cet article, jetons un coup d'œil aux rebondissements derrière cela et comment résoudre ce problème gracieusement. Après l'avoir lu, vous pouvez facilement faire face à divers problèmes de mise en cache, permettant à vos utilisateurs de toujours ressentir le contenu le plus frais. Parlons d'abord des bases. Pour le dire franchement, afin d'améliorer la vitesse d'accès, le navigateur ou le serveur stocke des ressources statiques (telles que des images, CSS, JS) ou du contenu de la page. La prochaine fois que vous y accédez, vous pouvez le récupérer directement à partir du cache sans avoir à le télécharger à nouveau, et il est naturellement rapide. Mais cette chose est aussi une épée à double tranchant. La nouvelle version est en ligne,

Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Comment utiliser les attributs de validation du formulaire HTML5 pour valider l'entrée utilisateur? Mar 17, 2025 pm 12:27 PM

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Quelles sont les meilleures pratiques pour la compatibilité entre les navigateurs dans HTML5? Mar 17, 2025 pm 12:20 PM

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

Comment ajouter efficacement les effets de course aux images PNG sur les pages Web? Comment ajouter efficacement les effets de course aux images PNG sur les pages Web? Mar 04, 2025 pm 02:39 PM

Cet article démontre un ajout de bordure PNG efficace aux pages Web à l'aide de CSS. Il soutient que CSS offre des performances supérieures par rapport à JavaScript ou à des bibliothèques, détaillant comment ajuster la largeur, le style et la couleur des bordures pour un effet subtil ou proéminent

Quel est le but du & lt; datalist & gt; élément? Quel est le but du & lt; datalist & gt; élément? Mar 21, 2025 pm 12:33 PM

L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

Quel est le but du & lt; mètre & gt; élément? Quel est le but du & lt; mètre & gt; élément? Mar 21, 2025 pm 12:35 PM

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Comment utiliser le html5 & lt; time & gt; élément pour représenter les dates et les temps sémantiquement? Mar 12, 2025 pm 04:05 PM

Cet article explique le html5 & lt; time & gt; élément de représentation sémantique de date / heure. Il souligne l'importance de l'attribut DateTime pour la lisibilité à la machine (format ISO 8601) à côté du texte lisible par l'homme, stimulant AccessIbilit

Quel est le but du & lt; Progress & gt; élément? Quel est le but du & lt; Progress & gt; élément? Mar 21, 2025 pm 12:34 PM

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati

See all articles